除了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'和' *'但没有运气。
有人可以帮忙或有人知道答案吗?或者,如果我误解了某些内容,请告诉我。
答案 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}