GateWay解决跨域问题(以及重复响应头问题)

本文详细介绍了如何在Spring Cloud Gateway中处理跨域问题,包括通过配置文件配置全局CORS策略,以及使用配置类自定义过滤器去除重复响应头。重点讲解了两种方法的实现细节和适用场景。

只要与当前浏览器访问的url不同(协议,域名,端口号),就会产生跨域。

方法1、通过配置文件解决

在GateWay配置文件中

spring:
  cloud:
    # gateway的配置
    gateway:
      # 跨域配置
      globalcors:
        cors-configurations:
          '[/**]':   # 允许跨域访问的资源
            allowedOrigins: "*"   #跨域允许来源
            allowedHeaders: "*"
            allowedMethods: "*"
            allowCredentials: true
            maxAge: 360000

正常情况下基于以上配置即可,但是由于目前的项目的下游微服务也配置了可以跨域的相关配置,这就导致返回的ResponseHeader中有多重属性,这个多重属性浏览器是不认的。所以基于此的处理方法,把下游的所有配置都取消,但是下游服务数量又太多,所以通过查询找到了以下的方案,参考https://github.com/spring-cloud/spring-cloud-gateway/issues/728

spring:
  cloud:
    # gateway的配置
    gateway:
	  # 此处不注掉,会导致gateway转发websocket服务的时候出现自动断开的情况,报504错误
	  # discovery:
	  #   locator:
	  #     enabled: true # 开启从注册中心动态创建路由的功能,利用微服务名称进行路由
      # 跨域配置
      globalcors:
        cors-configurations:
          '[/**]':   # 允许跨域访问的资源
            allowedOrigins: "*"   #跨域允许来源
            allowedHeaders: "*"
            allowedMethods: "*"
            allowCredentials: true
            maxAge: 360000
      # 加了以下配置会导致gateway转发websocket服务的时候出现自动断开的情况,报504错误
      default-filters:
        - DedupeResponseHeader=Vary Access-Control-Allow-Origin Access-Control-Allow-Credentials, RETAIN_FIRST

在配置文件中添加上面的过滤器,这个过滤器的作用是剔除重复的响应头。

方法2、通过配置类解决
import org.springframework.
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

_zxue

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

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

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

打赏作者

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

抵扣说明:

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

余额充值