您可以在同一系統中的服務之間共享標頭,但您可能不希望敏感標頭向下游泄漏到外部服務器。 您可以在路由配置中指定忽略的標頭列表。 Cookie起著特殊的作用,因為它們在瀏覽器中具有良好定義的語義,并且它們始終被視為敏感。 如果您的代理的消費者是瀏覽器,那么下游服務的cookie也會給用戶帶來問題,因為它們都混雜起來(所有下游服務看起來都來自同一個地方)。
如果您對服務的設計非常小心(例如,如果只有一個下游服務設置了cookie),您可以讓它們從后端一直流到調用者。 此外,如果您的代理設置了cookie并且所有后端服務都是同一系統的一部分,那么簡單地共享它們就很自然(例如,使用Spring Session將它們鏈接到某個共享狀態)。 除此之外,由下游服務設置的任何cookie都可能對調用者沒用,因此建議您(至少)將Set-Cookie和Cookie設置為不屬于您的域的路由的敏感標頭。 即使是屬于您域名的路由,也要在讓cookie和代理之間流動之前仔細考慮它的含義。
可以將敏感標頭配置為每個路由的逗號分隔列表,如以下示例所示:
```
zuul:
routes:
users:
path: /myusers/**
sensitiveHeaders: Cookie,Set-Cookie,Authorization
url: https://downstream
```
>這是sensitiveHeaders的默認值,因此除非您希望它不同,否則無需進行設置。 這是Spring Cloud Netflix 1.1中的新功能(在1.0中,用戶無法控制標題,并且所有Cookie都在兩個方向上流動)。
`sensitiveHeaders`是黑名單,默認不為空。 因此,要使Zuul發送所有標頭(忽略的標頭除外),您必須將其明確設置為空列表。 如果要將cookie或授權標頭傳遞到后端,則必須這樣做。 以下示例顯示了如何使用`sensitiveHeaders`:
```
zuul:
routes:
users:
path: /myusers/**
sensitiveHeaders:
url: https://downstream
```
您還可以通過設置`zuul.sensitiveHeaders`來設置敏感標頭。 如果在路由上設置了`sensitiveHeaders`,它將覆蓋全局`sensitiveHeaders`設置
- 快速開始
- I.云原生應用
- II. Spring Cloud配置
- III. Spring Cloud Netflix
- 11 服務發現:Eureka客戶端
- 11.1 如何引入eureka客戶端
- 11.2 注冊eureka
- 12.3 使用Eureka服務端的身份驗證
- 11.4狀態頁面和健康指標
- 11.5 注冊一個安全的應用
- 11.6 eureka的監控檢查
- 11.7 eureka實例和客戶端的元數據
- 11.8 使用eureka客戶端
- 11.8.1 不使用Jersey的eureka client
- 11.9 可選的原生 Netflix EurekaClient
- 11.10 為什么注冊服務這么慢
- 11.11 區域
- 12.服務發現:Eureka 服務端
- 12.1 如何引入 Eureka server
- 12.2 如何運行Eureka Server
- 12.3 高可用性和時區,區域
- 12.4 獨立模式
- 12.5 對等意識
- 12.6 什么時候使用ip地址
- 12.7 保護eureka服務
- 13.斷路器:Hystrix客戶端
- 14 斷路器:Hystrix儀表板
- 15. Hystrix 超時和Ribbon 客戶端
- 16 客戶端負載均衡:ribbon
- 17 外部配置:Archaius
- 18. 路由和過濾
- 18.1 如何引入zuul
- 18.2 嵌入式Zuul反向代理
- 18.3 Zuul Http Client
- 18.4 Cookies和敏感標題
- 18.5忽略的標題
- 18.6管理端點
- 18.6.1 路由端點
- 19. Polyglot 支持Sidecar
- 20 重試失敗的請求
- 21 HTTP Client
- IV. Spring Cloud OpenFeign
- V. Spring Cloud Stream
- VI. Binder Implementations
- VII. Spring Cloud Bus
- VIII. Spring Cloud Sleuth
- IX. Spring Cloud Consul
- X. Spring Cloud Zookeeper
- XI. Spring Boot Cloud CLI
- XII. Spring Cloud Security
- XIII. Spring Cloud for Cloud Foundry