五、跨域问题——Cors Filter

本文详细介绍了CORSFilter在JavaWeb应用中的使用,包括如何通过Maven依赖引入、配置参数如允许的源地址、HTTP方法、响应头等,以实现跨域资源共享功能。
摘要由CSDN通过智能技术生成

官方文档地址: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”。

请求标记包含以下四项:

  1. isCorsRequest:标记请求是否为跨域请求,值为“true或false”。
  2. origin:标记请求的源地址,未定义时为“null”。
  3. requestType:如果为跨域请求时,该请求标记主要标记当前正在进行的是真实(actual)请求,还是预检(preflight)请求,值为“actual或preflight”。
  4. requestHeaders:如果当前为跨域请求且为预检方式,则可获取“Access-Control-Request-Headers”的值,如果未定义,则为“null”。
  • 33
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Small-BUG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值