Spring Gateway 请求被 CORS 阻止(“Access-Control-Allow-Origin”标头包含多个值,但只允许一个)

问题描述 投票:0回答:1

我已经创建了一个网关API(Spring Boot)来路由到前端(Typescript)的许多后端服务(Spring Boot应用程序),但是当前端尝试访问网关API时,我不断收到CORS错误,即使它在 Postman 上运行良好。

这是我在控制台上遇到的错误:

从源“http://localhost:3000”获取“https://gatway-api-ip-address:port/level/global”的访问已被 CORS 策略阻止:“Access-Control-Allow-” Origin' 标头包含多个值“http://localhost:3000、http://localhost:3000”,但只允许使用一个。让服务器发送带有有效值的标头,或者,如果不透明响应满足您的需求,请将请求的模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。

这是我在网关 API 中的 application.yml:

  cloud:
    gateway:
      default-filters:
        - DedupeResponseHeader=Access-Control-Allow-Credentials Access-Control-Allow-Origin
      globalcors:
        corsConfigurations:
          '[/**]':
            allowedOrigins:
            - "http://localhost:3000"
            - "http://localhost:8000"
            - "http://frontend-ip-address:port"
            allowCredentials: true
            allowedMethods:
              - GET
              - POST
              - DELETE
              - GET
              - OPTIONS
            allowedHeaders: "*"

注意:每个后端服务、前端服务和网关 API 的 IP 地址与托管在一台 Digital Ocean 服务器上的相同。

注意:我已经为网关API颁发了自签名的ssl证书

java spring-boot cors api-gateway spring-cloud-gateway
1个回答
0
投票

当然,目标资源也有自己的 CORS 配置,这就是它重复的原因。如果您可以控制目标资源,请在目标资源上禁用 CORS,或者使用过滤器从请求中删除 Origin 标头。

filters:
- RemoveRequestHeader=Origin
© www.soinside.com 2019 - 2024. All rights reserved.