缺少访问控制允许来源[重复]

Posted

技术标签:

【中文标题】缺少访问控制允许来源[重复]【英文标题】: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!'); ,
);

【问题讨论】:

我试过了,还是不行,问题依旧 【参考方案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 过滤器的更多信息

【讨论】:

感谢您的回复,但我使用的是嵌入式码头

以上是关于缺少访问控制允许来源[重复]的主要内容,如果未能解决你的问题,请参考以下文章

移动网络应用程序的访问控制允许来源问题[重复]

处理无“访问控制允许来源” - 客户端问题

为啥我得到“没有访问控制允许来源”

捕获“访问控制允许来源不允许来源”错误

访问控制允许来源多个来源域?

访问控制允许来源多个来源域?