官方文档地址:CORS Filter : Cross-Origin Resource Sharing for Your Java Web Apps (dzhuvinov.com)。
1.1、 引用方式
- xml
<dependency>
<groupId>com.thetransactioncompany</groupId>
<artifactId>cors-filter</artifactId>
<version>[ version ]</version>
</dependency>
- xml
<filter>
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
1.2、 配置参数
1.2.1、 cors.allowGenericHttpRequests
默认值为“true”。
- true:允许一般http/https请求通过过滤器。
- false:仅允许CORS请求通过过滤器。
建议默认配置“true”。
1.2.2、 cors.allowOrigin
默认值为“*”。
用于配置CORS过滤器允许的源地址列表。
如果允许所有源地址,则设置为“*”。
未被允许的源地址请求将直接被返回403状态——禁止(拒绝)请求。
建议默认配置“*”。
1.2.3、 cors.allowSubdomains
默认值为“false”。
- true:允许源地址的所有子域名相关的源地址通过CORS过滤器。
- false:不允许源地址的所有子域名相关的源地址通过CORS过滤器。
建议默认配置“false”。
注:子域通过比较其组合和后缀(主机名/IP地址和可选端口号)进行匹配。
1.2.4、 cors.supportedMethods
请求头参数为“Access-Control-Allow-Methods”。
默认值为“GET, POST, HEAD, OPTIONS”。
支持的http/https方法请求方式,如果前台请求方法所采用的方式不属于其中的内容,将被CORS过滤器拦截,并返回405状态——“不允许使用方法”,拒绝响应。
建议默认配置“GET, POST, HEAD, OPTIONS”。
1.2.5、 cors.supportedHeaders
请求头参数为“ Access-Control-Allow-Headers”。
默认值为“*”。
配置“*”时,允许请求头参数通过过滤器。
建议默认配置“Accept, Origin,X-Requested-With, Content-Type,Last-Modified”。
1.2.6、 cors.exposedHeaders
响应头参数为“ Access-Control-Expose-Headers”。
默认值为空。
响应报头指示哪些报头可以公开为通过。
默认情况下,只显示6个简单的响应头,包括“Cache-Control,Content-Language,Content-Type,Expires,Last-Modified,Pragma”。
建议默认配置“X-Test-1,X-Test-2”。
1.2.7、 cors.supportsCredentials
响应头参数为“ Access-Control-Allow-Credentials”。
默认值为“true”。
响应头用于在请求要求包含 credentials(Request.credentials 的值为 include)时,告知浏览器是否可以将对请求的响应暴露给前端 JavaScript 代码,例如cookies、authorization headers、TLS client certificates之类的。
- true:允许。
- false:不允许。
建议默认配置“true”。
1.2.8、 cors.maxAge
响应头参数为“ Access-Control-Max-Age”。
默认值为“-1”。
这个响应头表示preflight request(预检请求)的返回结果(即 Access-Control-Allow-Methods 和Access-Control-Allow-Headers 提供的信息)可以被缓存多久。
建议默认配置“3600”。
1.2.9、 cors.tagRequests
默认值为false。
是否启用请求标记,以便在整个后端服务(filter/servlet)请求处理链路中均可以获取请求的CORS信息。
- true:开启。
- false:不开启。
建议默认配置“true”。
请求标记包含以下四项:
- isCorsRequest:标记请求是否为跨域请求,值为“true或false”。
- origin:标记请求的源地址,未定义时为“null”。
- requestType:如果为跨域请求时,该请求标记主要标记当前正在进行的是真实(actual)请求,还是预检(preflight)请求,值为“actual或preflight”。
- requestHeaders:如果当前为跨域请求且为预检方式,则可获取“Access-Control-Request-Headers”的值,如果未定义,则为“null”。