google-chrome - 最近我只在 Google Chrome 中遇到了 CORS 问题
问题描述
Google Chrome 最近遇到了一些主要的 CORS 问题:
从源“...”访问“...”处的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:它没有 HTTP ok 状态。
奇怪的是,该请求在 Mozilla Firefox 上完美运行。
我尝试向服务器添加不同的标头,包括:
Access-Control-Allow-Headers : Content-Type,Authorization,X-Requested-With,Accept,Access-Control-Request-Method,Origin,Access-Control-Request-Headers
Access-Control-Allow-Methods : GET, POST, DELETE, PUT,OPTIONS,HEAD
Access-Control-Allow-Origin : *
在“CORS Block”之前还有一个 OPTIONS 请求方法 Google Chrome 发送我的服务器但在这里我得到一个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)
这有什么关系吗?
提前感谢您的帮助和时间。
干杯!
解决方案
因此,显然这与服务器后端未正确处理 OPTIONS-preflight 有关。
我已经在 REST 端点中实现了 OPTIONS 方法:
@OPTIONS
public Response options() {
return Response.ok().build();
}
请记住,这不是处理问题的好方法,因为您需要为 API 中的每个端点实现此功能。
但我没有找到更好的解决方案,这对我有用。
干杯!
推荐阅读
- excel - 根据多个条件返回值
- javascript - VueRouter 不滚动到锚标签
- vue.js - 当我输入无效的 uri 时,Vue 总是重定向到主页
- javascript - 在特定条件下自动滚动页面到 Anchor
- java - android.view.WindowManager$BadTokenException 我在谷歌播放崩溃报告中收到此错误
- android-11 - 在 Android 11 上记录 exif 数据
- r - 如何使用生存分析计算药物保留率的置信区间
- angular - 将可注入服务传递给 Angular 中的父组件
- unity3d - 统一。适用于 Android/IOS 的曲面细分着色器
- firebase - 颤振中的 Firebase 实时数据库规则错误。如何获取它们