0

我一直在寻找如何在使用 Spring Cloud Gateway 和 Eureka 发现时启用 CORS。

我的应用程序已启动并运行,一切正常。当我使用 Eureka 发现时,我使用 application.properties 中的以下属性为 Spring Cloud 网关启用了自动路由发现,因此我不需要自己指定(自定义)路由。

spring.cloud.gateway.discovery.locator.enabled = true

我在网上搜索过如何启用 CORS 无济于事,因为目前它的记录很差。我唯一能找到的是以下文档:https : //cloud.spring.io/spring-cloud-gateway/single/spring-cloud-gateway.html#_header_route_predicate_factory 在第 5.14 节中提到了一些默认的安全标头已应用以及如何更改它们。

它说标头X-Permitted-Cross-Domain-Policies默认设置为none,这意味着 CORS 已禁用。

文档告诉我,我可以通过在 application.properties 文件中设置属性来更改此标头。

spring.cloud.gateway.filter.secure-headers.permitted-cross-domain-policies = ?

但是我不知道设置这个属性需要什么值,并且它没有记录在任何地方。我尝试将其设置为“任何”、“全部”和“*”,但没有运气。

有人可以帮忙吗,或者有人知道这个问题的答案吗?或者,如果我误解了某些内容,请告诉我。

4

1 回答 1

1

不,当 DiscoveryClient 路由定义定位器由 启用时,您无法设置其他响应标头spring.cloud.gateway.discovery.locator.enabled = true

您应该定义自己的路由并将 AddResponseHeader 添加到 application.properties 或 application.properties 中的过滤器,这是一个示例供您参考。

spring:
  cloud:
      routes:
      - id: foo_service
        uri: lb://foo_service
        predicates:
        - Path=/foo_service/**
        filters:
        - AddResponseHeader=Access-Control-Allow-Origin, *
        - RewritePath=/foo_service/(?<segment>.*), /$\{segment}
于 2018-03-16T06:27:02.147 回答