为了账号安全,请及时绑定邮箱和手机立即绑定

Java Spring:请求的资源上不存在“Access-Control-Allow-Origin”

Java Spring:请求的资源上不存在“Access-Control-Allow-Origin”

侃侃无极 2021-08-04 17:25:08
我正在尝试破解一个需要 CORS 的项目。当我请求 Java Spring Rest API 时,我收到:请求的资源上不存在“Access-Control-Allow-Origin”标头我的堆栈很简单。我在 Tomcat 中使用 Java Spring。在前端,我使用 jquery 发出请求。我没有看到来自 Spring 的任何关于此的日志,也没有看到在 Java spring 应用程序的调试器中显示的线程中的任何操作(这使得调试它被阻塞的地方变得非常困难)。就我的 spring 资源类而言,我@CrossOrigin()在类的顶部包含了交叉原点注释 ( )。我也试过在资源的方法上加上同样的注释(没有任何运气)。从长远来看,我还尝试在新的 web.xml 文件中放入一些配置,以旧式方式配置 CORS 过滤器:<filter>    <filter-name>CorsFilter</filter-name>    <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>    <init-param>        <param-name>cors.allowed.origins</param-name>        <param-value>*</param-value>    </init-param>    <init-param>        <param-name>cors.allowed.methods</param-name>        <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>    </init-param>    <init-param>        <param-name>cors.allowed.headers</param-name>        <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>    </init-param>    <init-param>        <param-name>cors.exposed.headers</param-name>        <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>    </init-param>    <init-param>        <param-name>cors.support.credentials</param-name>        <param-value>true</param-value>    </init-param>    <init-param>        <param-name>cors.preflight.maxage</param-name>        <param-value>10</param-value>    </init-param></filter><filter-mapping>    <filter-name>CorsFilter</filter-name>    <url-pattern>/*</url-pattern></filter-mapping>我想补充的最后一个细节是,当我向前面提到的 API(带有 CORS 注释)发出非 CORS 请求时,我没有看到返回的任何与允许所有或任何特定来源相关的标头。这让我想知道注释是否被某些东西挡住了。我意识到没有太多代码和日志,社区无法真正帮助我。我正在寻求有关如何调试此问题的指导。感谢您的帮助!
查看完整描述

2 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

有一种更简单的方法来验证。您可以使用postman或打开 F12 开发者工具查看请求的响应体(Request with non CORS)。如果Response头有access-control-allow-origin:*,则表示设置成功,然后检查是否有OPTION请求,因为浏览器不会直接请求该请求,而是会发送一个OPTION请求,看站点是否支持CORS。如果确实发送了 OPTION 请求,如果这个请求的响应码不是 200,就会导致 CORS 失败,所以你只需要正确响应这个 OPTION 请求即可。


查看完整回答
反对 回复 2021-08-04
  • 2 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信