CORS请求错误Tomcat 7& Java Servlet

时间:2015-06-11 17:38:42

标签: java tomcat servlets

我不知道怎么能让它发挥作用。我有一个在Tomcat 7服务器上运行的Java Servlet(在localhost:8080上运行),我想从不同的Web服务(在localhost:80上运行)发出PUT-Request。我在Servlet-Code和Tomcat配置中添加了CORS-Accept-Header,但是当我尝试进行PUT-Request时,我总是遇到这个错误:

[Error] Failed to load resource: Origin http://localhost is not allowed by Access-Control-Allow-Origin.

在我的Java Servlet中,我定义了以下标题:

response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Headers", "Content-Type");
response.addHeader("Access-Control-Max-Age", "86400");

在使用response.addHeader之前我使用了response.setHeader,但这在我的情况下没有任何区别。 在tomcat web.xml配置文件中,我添加了以下行:

 <filter>
    <filter-name>CorsFilter</filter-name>
    <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
    <init-param>
        <param-name>cors.allowed.methods</param-name>
        <param-value>GET,POST,HEAD,OPTIONS,PUT,DELETE</param-value>
    </init-param>
    <init-param>
        <param-name>cors.allowed.origins</param-name>
        <param-value>*</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CorsFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

如tomcat-7-docs中所述:https://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#CORS_Filter

我真的看不到我错过的东西

1 个答案:

答案 0 :(得分:0)

好的,我明白了。问题很简单,但这给我带来了很多麻烦。我正在用eclipse编程,我是这个IDE的新手。 Eclipse似乎在我工作区的二进制.metadata文件夹中使用它自己的Tomcat副本。 如果其他人有这个问题:更改eclipse的.metadata文件夹中的web.xml-File(它在那里保存1:1的tomcat副本),或者设置eclipse不要使用它自己的tomcat副本。 / p>