Java Tomcat CORS过滤器

Java Tomcat CORS过滤器,java,tomcat,web-applications,cors,Java,Tomcat,Web Applications,Cors,我想启用tomcat CORS过滤器,我将其添加到web.xml中: <filter> <filter-name>CorsFilter</filter-name> <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> </filter> <filter-mapping> <filter-name>

我想启用tomcat CORS过滤器,我将其添加到web.xml中:

<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>
这口井很管用,你能告诉我为什么吗? 我不知道这是否重要,但我正在使用Spring框架。

过滤器首先在请求中查找头:
Origin
。如果此标头不存在,则筛选器不会在响应中添加任何标头。也许正是因为这个原因,它不起作用

此外,在
POST
请求中,查找标题
内容类型
。其他方法也会发生类似的情况。您可能想查看此筛选器的详细信息。另一方面,有一个:


我遇到了类似的问题,我在tomcat doc上找到了适合我的东西 我使用filter和init param如下:


克斯菲尔特
org.apache.catalina.filters.CorsFilter
科尔斯
*
cors.methods
获取、发布、头部、选项、放置
cors.allowed.headers
内容类型、X-Requested-With、accept、Origin、访问控制请求方法、访问控制请求标头
cors.exposed.headers
访问控制允许来源,访问控制允许凭据
cors.support.credentials
真的
cors.preflight.maxage
10
克斯菲尔特
/*

希望有帮助

在我使用Ueditor的情况下,
X-Requested-with
应该是
X\u Requested\u with

我没有足够的声誉留下评论,但感谢您的回答@Krikza:)

使用Tomcat 9时,我遇到了以下问题:
javax.servlet.ServletException:AllowedOriginates=[*]时,不允许配置supportsCredentials=[true]

只需删除参数即可修复它

<init-param>
  <param-name>cors.support.credentials</param-name>
  <param-value>true</param-value>
</init-param>

cors.support.credentials
真的

您是如何测试
CorsFilter
?使用AJAX请求还是使用简单的GET?两者都有,但是firebug没有显示访问控制标题。您可以提供一个完整的示例来说明如何设置SimpleCORSFilter吗?进口的是什么?这个班住在哪里?我想将该类添加到tomcat,但不确定如何添加。这对我没有帮助。我只是为了测试而添加了Origin,tomcat没有返回headersHi,我正在尝试使用它,但是tomcat似乎不匹配
url模式
,或者可能过滤器没有启用。。。有没有办法放置调试日志?@HarshvardhanSharma您应该在web.xml文件的路径webapp/web-INF中添加/更改代码
public class SimpleCORSFilter implements Filter {

    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
        chain.doFilter(req, res);
    }
}
<init-param>
  <param-name>cors.support.credentials</param-name>
  <param-value>true</param-value>
</init-param>