gpt4 book ai didi

java - 在反向代理后面嵌入 Tomcat 的 Spring Boot 应用程序在请求/contextPath 时不重定向到 https 而没有尾部斜线

转载 作者:行者123 更新时间:2023-11-28 23:12:10 25 4
gpt4 key购买 nike

这个问题似乎已经被问过多次,但对于这个特殊情况,我还没有找到合适的解决方案。

该应用程序是一个 Spring Boot 1.5.x,它使用嵌入式 Tomcat 服务器并在 Openshift 上运行。后者有一个带有 HTTPS 路由的路由器,该路由终止 TLS 隧道并通过 HTTP 将流量转发到应用程序 pod。此外,它还插入 X-Forwarded- header (包括 X-Forwarded-Proto header ),以便使用 https 协议(protocol)组成应用程序重定向。

我已经在 Spring Boot 应用程序中配置了 server.use-forward-headers: true 并对其进行了测试:

1) 确定 -> https://ocproute/myapp/将 302 重定向到我的主页,保持 https 协议(protocol)(Tomcat RemoteIpValve 负责处理)。

2) 失败 -> https://ocproute/myapp (注意没有尾部斜杠)将 302 重定向到 http://ocproute/myapp/如您所见,由于尚未调用 RemoteIpValve,它将协议(protocol)更改为 http。

日志显示 Tomcat 的 Http11InputBuffer 接收到请求并在某个时候重定向它,而不考虑 X-Forwarded-Proto header 。

如何解决这个问题?

2019-06-03T17:31:59.230 ( -  -  -  -  - ) o.a.t.u.n.NioEndpoint DEBUG - Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@1511311d:org.apache.tomcat.util.net.NioChannel@5209052:java.nio.channels.SocketChannel[connected local=/0:0:0:0:0:0:0:1:8080 remote=/0:0:0:0:0:0:0:1:64871]], Read direct from socket: [595]
2019-06-03T17:31:59.230 ( - - - - - ) o.a.c.h.Http11InputBuffer DEBUG - Received [GET /myapp HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
X-Forwarded-Proto: https
Accept-Encoding: gzip, deflate, br
Accept-Language: en-GB,en;q=0.9,en-US;q=0.8,es;q=0.7,cy;q=0.6
Cookie: JSESSIONID=4693A1F63CD3E18058F98E129D11CE57

]
...

最佳答案

你可以在你的 spring boot 配置中设置这个属性:

server.tomcat.use-relative-redirects=true 

引用:https://github.com/spring-projects/spring-boot/issues/22908

关于java - 在反向代理后面嵌入 Tomcat 的 Spring Boot 应用程序在请求/contextPath 时不重定向到 https 而没有尾部斜线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56430476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com