【发布时间】:2018-04-28 09:11:35
【问题描述】:
从我的 tomcat 网络服务发送一个发布请求时,我收到如下错误: " 对预检请求的响应未通过访问控制检查:请求的资源上不存在 'Access-Control-Allow-Origin' 标头。因此不允许访问 Origin 'null'。"
我正在使用 tomcat 9.* 并使用 jax-rs java web api 开发了我的 web 服务。
虽然我用邮递员测试了我的网络服务,但我的网络服务得到了很好的响应(http 200 响应)。然而,当我尝试发送 ajax 发布请求时,我收到了上面的消息。我尝试启用 CORS 过滤器并尝试发送工作正常的获取请求..
web.xml:
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>'
jax-rs 发布函数:
@POST
@Path("/users2")
@Consumes("application/json")
@Produces(MediaType.APPLICATION_JSON)
public Response SetAllTlcsStatus(List<TrafficLight> c){
System.out.println("You have entered the SetTlc function");
return Response.ok() //200
.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Methods", "GET, POST, DELETE,
PUT")
.allow("OPTIONS").build();
}
ajax 请求:
$.ajax({
type : "POST",
url : "http://localhost:8080/userManagement/rest/Traffic/users2",
contentType :"application/json; charSet=UTF-8",
data : d,
dataType : "json",
beforeSend: function (xhr){
console.log('Before');
xhr.setRequestHeader('Authorization', make_base_auth(user, pass));
}'
【问题讨论】:
标签: jquery ajax web-services tomcat jax-rs