最近,我仅在Google Chrome浏览器中遇到了CORS问题

时间:2020-01-21 13:53:07

标签: google-chrome request cors

最近,Google Chrome浏览器出现了一些重大的CORS问题:

从源“ ...”对“ ...”处的XMLHttpRequest的访问已被阻止 通过CORS策略:对预检请求的响应未通过访问 控件检查:它没有HTTP正常状态。

奇怪的是,该请求在Mozilla Firefox上可以完美运行。
我试图向服务器添加不同的标头,包括:

访问控制允许标题:内容类型,授权,X请求方式,接受,访问控制请求方法,来源,访问控制请求标题
访问控制允许方法:GET,POST,DELETE,PUT,OPTIONS,HEAD
访问控制允许来源:*

另外,在“ CORS阻止”之前,还有一个OPTIONS请求方法,谷歌浏览器将我的服务器发送给我,但是在这里,我收到了500个服务器错误:

javax.servlet.ServletException:MultiException有4个异常。 他们是:

  1. javax.ws.rs.ProcessingException:创建用于Wadl处理的JAXBContext时出错。

  2. java.lang.IllegalStateException:无法执行操作:创建于 org.glassfish.jersey.server.wadl.internal.WadlApplicationContextImpl

  3. java.lang.IllegalArgumentException:尝试解析以下项的依赖项时 org.glassfish.jersey.server.wadl.processor.WadlModelProcessor $ OptionsHandler 发现错误
  4. 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)


这和它有关系吗?

在此先感谢您的帮助和时间。
干杯!

1 个答案:

答案 0 :(得分:0)

因此,显然与服务器后端未正确处理OPTIONS-preflight有关。
我已经在REST端点中实现了OPTIONS方法:

@OPTIONS
public Response options() {
    return Response.ok().build();
}

请记住,这不是解决问题的好方法,因为您需要为API中的每个端点实现此方法。
但是我没有找到更好的解决方案,这对我有用。

干杯!