Tomcat Request.getPort()剥离端口号

时间:2014-11-27 17:22:00

标签: java spring tomcat

问题:

我使用Java HttpServeltResponse来调用sendRedirect,但在特定部署中,HTTP端口号不包含在HTTP 302响应消息中。

详细信息:

我有一个应用程序,它使用spring security来验证和重定向成功。我提供的重定向URL是一个相对路径。

在重定向上,spring框架在HttpServletResponse上调用sendRedirect,并在相关URL中传入上下文路径。例如:

HttpServletResponse.sendRedirect( “/ MyApp的/ index.html中”);

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

http://server:8082/MyApp/authenticate

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

单步执行代码,我可以看到端口是通过询问Java Request Object来确定的,这似乎是由Web Application Container提供的(即Jetty / Tomcat?)。在我的开发环境中,它是org.eclipse.jetty.server.Request。

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

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

0 个答案:

没有答案