【发布时间】:2019-01-28 05:15:33
【问题描述】:
我正在尝试破解一个需要 CORS 的项目。当我请求 Java Spring Rest API 时,我收到:
请求的资源上没有“Access-Control-Allow-Origin”标头
我的堆栈非常简单。我正在将 Java Spring 与 Tomcat 一起使用。在前端,我使用 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 请求时,我没有看到任何与允许所有或任何相关的标头返回具体产地。这让我想知道注释是否被某些东西阻止了。
我意识到没有太多代码和日志,社区无法真正帮助我。我正在寻求有关如何调试此问题的指导。感谢您的帮助!
【问题讨论】:
标签: java spring google-chrome cors