【发布时间】:2016-12-02 00:57:04
【问题描述】:
这似乎是一个已知问题,并且该主题存在许多问题,但是,我的情况很奇怪。我有一个部署在 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”标头。因此,Origin 'https://www.mytestpage.com' 不允许访问。响应的 HTTP 状态代码为 403。
在 tomcat 日志文件中我还看到了 403 的响应代码。有趣的是,我的应用程序的代码在跨域请求的情况下永远不会执行。请求在到达我的应用程序之前被阻止,并立即发送 403。我在tomcat前面没有apache,它是普通的tomcat。我已经尝试了很多事情,包括将来源列入白名单和指定允许的标头 - 没有任何帮助。我还尝试以编程方式设置标头,直到发现跨域请求的代码从未执行。
UPD:端点接受 POST 请求。这些 POST 请求作为 XmlHttpRequests 从 JS sn-p 发送。
有什么想法吗?
p.s 我可以成功提出同源请求。
【问题讨论】:
-
您好,您在
CorsFilter配置中使用默认值,所以问题可能出在所有问题上。例如cors.allowed.methods默认值是GET, POST, HEAD, OPTIONS并且可能在请求中DELETE正在尝试。你能发布更多细节吗? -
我已经更新了这个问题。我正在发送 POST 请求。
-
请求被
org.apache.catalina.filters.CorsFilter拒绝。尝试调试它或将您的记录器设置为此类的调试级别。 -
是的,绝对是过滤器阻塞了请求。如何调试或将记录器放在这个特定的类上?
-
您使用什么 IDE、什么记录器、什么构建工具?
标签: post cors tomcat8 http-status-code-403