这似乎是一个已知问题,并且该主题存在许多问题,但是,我的情况很奇怪。我有一个部署在 tomcat 8.0.36 上的简单 Web 应用程序。我已经正确配置了 CORS:

<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> 

跨域请求被浏览器拦截:

请求的资源上不存在“Access-Control-Allow-Origin” header 。起源' https://www.mytestpage.com ' 因此不允许访问。响应具有 HTTP 状态代码 403。

在 tomcat 日志文件中,我还看到了 403 的响应代码。有趣的是,在跨域请求的情况下,我的应用程序的代码永远不会执行。请求在到达我的应用程序之前被阻止,并立即发送 403。我在 tomcat 前面没有 apache,它是普通的 tomcat。我尝试了很多事情,包括将来源列入白名单和指定允许的 header - 没有任何帮助。我还尝试以编程方式设置 header ,直到我发现在跨域请求的情况下永远不会执行代码。

UPD:端点接受 POST 请求。这些 POST 请求从 JS 代码段作为 XmlHttpRequests 发送。

任何想法它可以是什么?

p.s 我可以成功提出同源请求。

请您参考如下方法:

我发现了问题所在——我必须在请求中设置 Content-Type header ,否则请求将被阻止。 - Tomcat CORS filter


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!