最近,Google Chrome浏览器出现了一些重大的CORS问题:
从源“ ...”对“ ...”处的XMLHttpRequest的访问已被阻止 通过CORS策略:对预检请求的响应未通过访问 控件检查:它没有HTTP正常状态。
奇怪的是,该请求在Mozilla Firefox上可以完美运行。
我试图向服务器添加不同的标头,包括:
访问控制允许标题:内容类型,授权,X请求方式,接受,访问控制请求方法,来源,访问控制请求标题
访问控制允许方法:GET,POST,DELETE,PUT,OPTIONS,HEAD
访问控制允许来源:*
另外,在“ CORS阻止”之前,还有一个OPTIONS请求方法,谷歌浏览器将我的服务器发送给我,但是在这里,我收到了500个服务器错误:
javax.servlet.ServletException:MultiException有4个异常。 他们是:
javax.ws.rs.ProcessingException:创建用于Wadl处理的JAXBContext时出错。
java.lang.IllegalStateException:无法执行操作:创建于 org.glassfish.jersey.server.wadl.internal.WadlApplicationContextImpl
- java.lang.IllegalArgumentException:尝试解析以下项的依赖项时 org.glassfish.jersey.server.wadl.processor.WadlModelProcessor $ OptionsHandler 发现错误
java.lang.IllegalStateException:无法执行操作:解析为 org.glassfish.jersey.server.wadl.processor.WadlModelProcessor $ OptionsHandler
org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:432) org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:370) org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:389) org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:342) org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:229) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) com.isyndix.rest.CORSFilter.doFilter(CORSFilter.java:40)
这和它有关系吗?
在此先感谢您的帮助和时间。
干杯!
答案 0 :(得分:0)
因此,显然与服务器后端未正确处理OPTIONS-preflight有关。
我已经在REST端点中实现了OPTIONS方法:
@OPTIONS
public Response options() {
return Response.ok().build();
}
请记住,这不是解决问题的好方法,因为您需要为API中的每个端点实现此方法。
但是我没有找到更好的解决方案,这对我有用。
干杯!