缺少访问控制允许来源[重复]
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)
$.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 过滤器的更多信息
【讨论】:
感谢您的回复,但我使用的是嵌入式码头以上是关于缺少访问控制允许来源[重复]的主要内容,如果未能解决你的问题,请参考以下文章