gateway 跨域

网上的写法,都有点不太一样。

首先,看一下我的gateway版本

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
            <version>3.0.3</version>
        </dependency>

配置文件:

spring:
  cloud:
    gateway:
      globalcors:
        cors-configurations:
          '[/**]':
            allowed-headers: "*"
            allowed-origins: "*"
            allowed-methods: "*"

### 网关配置方案 对于网关中的配置,特别是当希望排除某些路径或服务不受限制时,可以通过调整 `spring.cloud.gateway.globalcors` 配置来实现。全局CORS(源资源共享)设置可以应用到所有路由上,但如果想要针对特定路径实施不同的策略,则需采用局部配置的方式。 #### 排除特定路径的限制 要使某些路径不受到规则的影响,可以在定义这些路径对应的路由时不指定任何 CORS 相关属性。这样做的效果是让该路径遵循浏览器默认行为处理请求,即不做特殊处理[^2]。 ```yaml spring: cloud: gateway: routes: - id: non_cors_route uri: lb://example-service predicates: - Path=/api/non-cors/** ``` 上述例子展示了如何创建一条名为 `non_cors_route` 的路由规则,它指向的服务不会被施加额外的约束,因为这里并没有为这条路线设定任何 CORS 参数。 #### 对其他路径启用并定制化支持 而对于那些确实需要访问权限的路径和服务来说,在其各自的路由条目下加入具体的 CORS 设置即可满足需求: ```yaml spring: application: name: gateway cloud: nacos: config: server-addr: 127.0.0.1:8848 gateway: globalcors: cors-configurations: '[/**]': allowCredentials: true allowedHeaders: "*" allowedOriginPatterns: "http://localhost:*" allowedMethods: "*" routes: - id: cors_enabled_route uri: lb://another-service predicates: - Path=/api/cors-enabled/** filters: - AddRequestHeader=Access-Control-Allow-Origin, http://specific.origin.com ``` 此段配置中,除了设置了全局的 CORS 政策外,还特别指定了一个带有自定义响应头 (`AddRequestHeader`) 过滤器的路由 `cors_enabled_route` ,这使得只有来自 `http://specific.origin.com` 的请求能够成功通过验证。 #### 使用通配符模式精确控制允许的来源 值得注意的是,如果使用了 `allowCredentials: true` 并且需要携带凭证的话,那么就不能再简单地使用 `allowedOrigins` 来接受所有的原始站点;相反,应该利用 `allowedOriginPatterns` 提供更灵活的选择机制,从而确保安全性的同时也达到了预期的功能目的。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值