它看起来像一个已知的问题,并且在这个话题上存在很多问题,但是,我的情况非常奇怪。我有一个简单的web应用程序,部署在tomcat 8.0.36上。我已经正确配置了CORS:交叉来源请求在tomcat 8中被阻止
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
的跨域请求由浏览器阻止:
否“访问控制允许来源”标头出现在所请求的资源。因此'Origin'https://www.mytestpage.com'不允许访问。响应的HTTP状态码为403.
在tomcat日志文件中,我也看到了403的响应代码。有趣的是,我的应用程序的代码从未在交叉源请求的情况下执行。请求在到达我的应用程序之前被阻止,并且403被立即发送。我在tomcat前没有apache,这是纯粹的tomcat。我尝试了很多东西,包括将白名单列出来并指定允许的标题 - 没有任何帮助。我还尝试以编程方式设置标题,直到我发现从未执行跨源请求时的代码。
UPD:终点接受POST请求。这些POST请求以JS片段的XmlHttpRequests的形式发送。
任何想法它可以是什么?
p.s我可以做出成功的相同的原产地请求。
嗨, 你在'CorsFilter'配置中使用默认值, 所以问题可以与一切有关。 例如 'cors.allowed.methods'默认值是'GET,POST,HEAD,OPTIONS',也许在请求'DELETE'尝试。 你能发布更多的细节吗? – snieguu
我已更新该问题。我正在发送POST请求。 – bekon
请求被'org.apache.catalina.filters.CorsFilter'拒绝。尝试调试它或设置你的记录器到这个类的调试级别。 – snieguu