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