使用以下架构时,使用两个代理
X-Forwarded-Prefix=/a X-Forwarded-Prefix=/a
/a/b/auth +----------+ /b/auth +----------+ /b/auth +----------+
+------->| |+--------->| |+-------->| |
| HTTPd | | Zuul | | Auth |
<-------+| |<---------+| |<--------+| Service |
+----------+ +----------+ +----------+
当过滤器在身份验证流程中触发
HttpSessionRequestCache
时(当用户未通过身份验证时),即使在使用 X-Forwarded-Prefix
时也不考虑 server.use-forward-headers=true
保存请求(听起来很正常,因为 RemoteIpValve
不处理 X-Forwarded-Prefix
)。因此在那之后
SavedRequestAwareAuthenticationSuccessHandler
会将用户重定向到 /b/XXX
而不是 /a/b/XXX
这可能是一个可能的问题吗?或者只是我的用例太不常见,我必须自己处理标题
X-Forwarded-Prefix
? 最佳答案
自 Spring 4.3 以来已修复,它提供了名为 RemoteIpValve
的 ForwardedHeaderFilter
的替代方案