这个问题似乎已被多次询问,但对于这种特殊情况,我还没有找到合适的解决方案。
该应用程序是一个 Spring Boot 1.5.x,它使用嵌入式 Tomcat 服务器并在 Openshift 上运行。后者有一个带有 HTTPS 路由的路由器,该路由终止 TLS 隧道并通过 HTTP 将流量转发到应用程序 pod。此外,它还插入 X-Forwarded- 标头(包括 X-Forwarded-Proto 标头),以便使用 https 协议组成应用程序重定向。
我已经server.use-forward-headers: true
在 Spring Boot 应用程序中配置并测试了它:
1) OK -> https://ocproute/myapp/将 302 重定向到我的主页,保持 https 协议(Tomcat RemoteIpValve 处理了它)。
2) FAIL -> https://ocproute/myapp(注意没有尾部斜杠)将 302 重定向到http://ocproute/myapp/如您所见,由于尚未调用 RemoteIpValve,它已将协议更改为 http) .
日志显示 Tomcat 的 Http11InputBuffer 收到请求并在某个时候重定向它而不考虑 X-Forwarded-Proto 标头。
这怎么能解决?
阿波罗的战车
守候你守候我
相关分类