CORS 过滤器在我的 Java 应用程序中不起作用
Posted
技术标签:
【中文标题】CORS 过滤器在我的 Java 应用程序中不起作用【英文标题】:CORS Filter not working in my java application 【发布时间】:2018-10-06 22:31:23 【问题描述】:我正在使用 jdk 8,并在我的 build.gradle 中添加了 tomcat-catalina,并在 web.xml 中配置了以下值,但是在访问请求 URL 时它不返回响应头。
build.gradle:
compile group: 'org.apache.tomcat', name: 'tomcat-catalina', version: '8.5.29'
web.xml
<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>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这对我不起作用..
共鸣:
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET /myApplication/test?sample=value HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 200
< Content-Type: application/json;charset=utf-8
< Content-Length: 78
< Date: Thu, 26 Apr 2018 08:08:31 GMT
<
我的自定义 CorsFilter 在我的应用程序中运行良好。
我做错了什么?如何在我的应用程序中配置 apache CorsFiler 而不是自定义 CorsFiler?
请提供您的意见。
【问题讨论】:
问题解决了吗? 【参考方案1】:我也发现了 spring 框架的类似问题。我通过在响应标头中添加 X-XSRF-TOKEN 解决了这个问题。
尝试添加。或许能解决问题。
res.addHeader("Access-Control-Allow-Headers", "x-requested-with, authorization, Content-Type, Authorization, credential, X-XSRF-TOKEN");
【讨论】:
自定义 cors 过滤器工作正常..如何在我的应用程序中启用 apache tomcat-catalina Cors 过滤器。 在这种情况下,您需要使用 Access-Control-Allow-Origin 进行限制。例如访问控制允许来源:myhost.com以上是关于CORS 过滤器在我的 Java 应用程序中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何在 play 2.2.0 Java 中实现 CORS 过滤器?