java - CORS 过滤器在我的 Java 应用程序中不起作用

标签 java tomcat web-applications cors servlet-filters

我正在使用 jdk 8 并在我的 build.gradle 中添加了 tomcat-catalina,并在 web.xml 中配置了以下值,但在访问请求 URL 时它不返回响应 header 。

build.gradle:

编译组:'org.apache.tomcat',名称:'tomcat-catalina',版本:'8.5.29'

网络.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??

请提供您的意见。

最佳答案

我在 spring 框架中也发现了类似的问题。我通过在响应 header 中添加 X-XSRF-TOKEN 解决了这个问题。

尝试添加。它可能会解决问题。

res.addHeader("Access-Control-Allow-Headers", "x-requested-with, authorization, Content-Type, Authorization, credential, X-XSRF-TOKEN");

关于java - CORS 过滤器在我的 Java 应用程序中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50039348/

相关文章:

java - 使用 Google GSON 的 Lotus Domino Java 安全问题

java swing - 向我的 JTree 节点添加颜色

tomcat - Maven Tomcat 插件 - 指定 war 目的地?

java - Spring Schedule 方法被调用两次

java - 如何在 WSO2 AS 5.2.1 上设置和部署 WebSocket?

Java 将除引号内的逗号以外的所有逗号替换为分号

java - 如何仅使用其值之一从 Parcelable 数组列表中删除元素?

tomcat - 需要在单个实例上自动部署多个 Tomcat?

.net - ASP.NET ListView - 可使用 CSS 固定 header 滚动

.net - 用户 'DOMAIN\MACHINENAME$'登录失败