使用Eureka发现的Spring Cloud Gateway启用CORS策略

时间:2018-02-23 08:00:43

标签: spring-boot cors netflix-eureka spring-cloud-gateway

除了Eureka发现之外,我一直在搜索如何在使用Spring Cloud Gateway时启用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 =?

但是我不知道设置这个属性需要什么价值,并且它没有记录在任何地方。我已经尝试将其设置为' any',' all'和' *'但没有运气。

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

1 个答案:

答案 0 :(得分:1)

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

您应该定义自己的路由并将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}