我們是使用spring cloud zuul作為api-gateway實踐中,發現默認zuul會過濾掉cookie等header信息,有些業務場景需要傳遞這些信息該怎么處理呢?
處理方式 在api-gateway的application.properties文件中添加 zuul.sensitive-headers=
問題原因
負責根據ServiceId來路由的RibbonRoutingFilter在route之前會調用ProxyRequestHelper的buildZuulRequestHeaders(request)來重新組裝一個新的Header。
在buildZuulRequestHeaders方法中會對RequsetHeader中的每一項調用isIncludedHeader(name)來判斷當前項是否應該留在新的Header中,如下圖,如果當前項在IGNORED_HEADERS(需要忽略的信息)中,就不會在新header中保留。
PreDecorationFilter過濾器會調用ProxyRequestHelper的addIgnoredHeaders方法把敏感信息(ZuulProperties的sensitiveHeaders屬性)添加到請求上下文的IGNORED_HEADERS中
sensitiveHeaders的默認值初始值是"Cookie", "Set-Cookie", "Authorization"這三項,可以看到Cookie被列為了敏感信息,所以不會放到新header中
————————————————
版權聲明:本文為CSDN博主「凌霄羽」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lindan1984/article/details/79308396