Java Tomcat Request.getPort()剥离端口号

Java Tomcat Request.getPort()剥离端口号,java,spring,tomcat,Java,Spring,Tomcat,问题: 我使用Java HttpServelResponse调用sendRedirect,但在特定部署中,HTTP 302响应消息中不包括URL端口号 详细信息: 我有一个应用程序,它使用spring安全性在成功时进行身份验证和重定向。我提供的重定向URL是一个相对路径 在重定向时,spring框架在HttpServletResponse上调用sendRedirect,HttpServletResponse随相对URL一起在上下文路径中传递。例如: HttpServletResponse.sen

问题:

我使用Java HttpServelResponse调用sendRedirect,但在特定部署中,HTTP 302响应消息中不包括URL端口号

详细信息:

我有一个应用程序,它使用spring安全性在成功时进行身份验证和重定向。我提供的重定向URL是一个相对路径

在重定向时,spring框架在HttpServletResponse上调用sendRedirect,HttpServletResponse随相对URL一起在上下文路径中传递。例如:

HttpServletResponse.sendRedirect(“/MyApp/index.html”)

当我们在各种平台(Windows/Ubuntu等)上部署到tomcat实例时,这一切都很好。但是,我们的一个客户端发现,在其部署中,重定向端口被剥离,例如,如果入口点是:

http://server:8082/MyApp/authenticate
他们得到的重定向是:
http://server/MyApp/index.html
-此页面不存在,因为它缺少端口8082

在代码中,我可以看到端口是通过询问Java请求对象来确定的,Java请求对象似乎是由Web应用程序容器(即Jetty/Tomcat?)提供的。在我的开发环境中,它是org.eclipse.jetty.server.Request

这是tomcat的配置问题吗?我们可以使用Apache2 ProxyPassReverse复制相同的行为,但他们向我保证他们没有运行Apache2,并且他们的连接是到tomcat的直接连接


由于我无法在任何地方复制这个问题,我真的很想找到答案。非常感谢您的帮助。

我会仔细检查您客户的陈述。例如,底层网络通信的转储(
tcpdump
/
Wireshark
)可能会显示一些部署不一致。还要询问Tomcat的确切版本,并检查他们的问题跟踪程序。