403和CORS错误访问tomcat登录页面

时间:2018-02-26 04:28:29

标签: java jsp intellij-idea cors tomcat7

我正在使用带有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安全性,我能够提出请求 - 但这不是我想要的解决方案。

谢谢, 平均

2 个答案:

答案 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以解决问题。