Access-Control-Allow-Origin缺失

时间:2018-01-29 08:00:54

标签: javascript java rest cors

我正在开发一个REST api并通过我的浏览器(firefox)使用它,但是我收到了这个错误

  

阻止跨源请求:同源策略禁止在http://localhost:8080/siga/av读取远程资源。 (原因:缺少CORS标题'Access-Control-Allow-Origin'。

我正在使用嵌入式码头9进行拆迁。

我的方法:

@GET
@Path("av")
@Produces(MediaType.TEXT_PLAIN)
@Override
public Response avoidCrossDomain() {
    return Response.status(Status.FOUND).entity("hello").header("Access-Control-Allow-Origin", "*").build();
}   
邮递员答复:

  

Access-Control-Allow-Origin→*

     

Content-Length→5

     

Content-Type→text / plain

     

日期→星期一,2018年1月29日07:58:28 GMT

     

服务器→Jetty(9.2.3.v20140905)

Javascript

$.ajax({

url: 'http://localhost:8080/siga/av',
type: 'GET',
crossDomain: true,
dataType: 'jsonp',
success: function(data) { alert("data"); },
error: function() { alert('Failed!'); },
});

1 个答案:

答案 0 :(得分:0)

您必须在web.xml

中为jetty定义CORS过滤器
<filter>
    <filter-name>cross-origin</filter-name>
    <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>cross-origin</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

您可以在jetty documentation

中找到有关CORS过滤器的更多信息