【问题标题】:Access-Control-Allow-Origin missing [duplicate]缺少访问控制允许来源[重复]
【发布时间】:2018-07-07 21:13:26
【问题描述】:

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

跨域请求被阻止:同源策略不允许读取位于http://localhost:8080/siga/av 的远程资源。 (原因:缺少 CORS 标头“Access-Control-Allow-Origin”)。

我正在使用嵌入式 jetty 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();
}   

邮递员回复:

访问控制允许来源→*

内容长度→5

内容类型→文本/纯文本

日期 →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!'); },
});

【问题讨论】:

  • 我试过了,还是不行,问题依旧

标签: javascript java rest cors


【解决方案1】:

您必须在 web.xml 中为码头定义 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 过滤器的更多信息

【讨论】:

  • 感谢您的回复,但我使用的是嵌入式码头
猜你喜欢
  • 2021-05-30
  • 2021-10-21
  • 2016-09-08
  • 2016-12-10
  • 1970-01-01
  • 1970-01-01
  • 2019-02-08
  • 2017-04-16
  • 1970-01-01
相关资源
最近更新 更多