我正在使用带有IntelliJ的tomcat Web服务器。我不确定我的更改内容,但我无法再点击登录的jsp页面了。这是chrome中的输出。
VM5506:1个选项http://localhost:8105/api/login.jsp 403(禁止) (index):1无法加载http://localhost:8105/api/login.jsp:响应 预检请求没有通过访问控制检查:否 '访问控制允许来源'标题出现在请求的上 资源。起源' http://localhost:1841'因此是不允许的 访问。响应的HTTP状态代码为403。
页面上设置了CORS标题:
<%
response.addHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
response.addHeader("Access-Control-Allow-Credentials", "true");
response.addHeader("Access-Control-Allow-Headers", "Application, Origin, X-Requested-With, Content-Type, Accept");
%>
我还尝试在C:\ Program Files \ Apache Software Foundation \ Tomcat 7.0 \ conf \ web.xml
中的根web.xml中设置cors设置我正在设置&#34; Origin&#34;在ajax请求中正确标头。
我可以在不执行CORS请求的情况下点击页面,例如使用curl。
问题似乎是在Tomcat级别,因为调试甚至无法到达登录页面。我已经尝试在WebContent \ WEB-INF \ 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>
同样的错误。
如果我关闭Chrome安全性,我能够提出请求 - 但这不是我想要的解决方案。
谢谢, 平均
答案 0 :(得分:0)
问题不在于GET请求本身 - 它与预检&#39; OPTIONS在执行实际GET之前请求CORS正在执行。
由于您获得了OPTIONS请求的403响应代码,我怀疑您的Tomcat Web服务器根本不允许OPTIONS请求。所以先检查一下。
但是,即使您的Tomcat Web服务器 允许OPTIONS请求,您仍然需要在对预检OPTIONS的响应中包含Access-Control-Allow-Origin
和其他CORS响应头。请求。我认为您的web.xml文件已正确设置。
答案 1 :(得分:0)
重新安装tomcat以解决问题。