Cookie与头信息
默认情况下,Spring Cloud Zuul在请求路由时,会过滤掉HTTP请求头信息中的一些敏感信息,防止它们被传递到下游的外部服务器。
-
默认的敏感头信息通过zuul.sensitiveHeaders 参数定义, 包括
Cookie
、Set-Cookie
、Authorization
三个属性。 -
所以,我们在开发Web项目时常用的Cookie在Spring Cloud Zuul网关中默认是不会传递的,这就会引发一个常见的问题:
-
如果我们要将使用了
Spring Security
、Shiro
等安全框架构建的Web应用通过Spring Cloud Zuul
构建的网关来进行路由时,由于Cookie信息无法传递,我们的Web应用将无法实现登录和鉴权
。
解决办法
-
通过设置全局参数为空来覆盖默认值:
不推荐
zuul.sensitivelHeaders=
-
这种方法并不推荐,虽然可以实现Cookie的传递,但是破坏了默认设置的用意。
-
在微服务架构的API网关之内,对于无状态的RESTfulAPI请求肯定是要远多于这些Web类应用请求的,甚至还有一些架构设计会将Web类应用和App客户端一样都归为API网关之外的客户端应用。
-
通过指定路由的参数来配置,方法有下面两种。
推荐
方法一:对指定路由开启自定义敏感头
zuul.routes.<router>.customSensitiveHeaders=true
方法二:将指定路由的敏感头设置为空
zuul.routes.<router>.sensitiveHeaders=