1

我有一个带有嵌入式 tomcat 的 spring-boot Web 应用程序,在端口 28081 上运行,并且 httpd 配置为这样的代理:

ProxyPass / http://localhost:28081/
ProxyPassReverse / http://localhost:28081/

然后在 jsp 页面中,我需要将完整的请求 URL 传递给 silverlight 小部件;但是

${pageContext.request.serverName}:${pageContext.request.serverPort}

将解决http://localhost:28081

所以我想依赖X-Forwarded-Host,但在某些情况下它确实包含多个代理地址,以逗号分隔。我不确定是否可以安全地相信地址的顺序会被保留。

有没有更好的方法来做到这一点,无论是在 jsp 中,在 httpd 配置中还是在控制器代码中?

4

2 回答 2

5

在控制器中,您可以使用ServletUriComponentsBuilder:从请求中对其进行初始化,然后它会挑选出代理标头并为您构建源的 URI,例如String uri = ServletUriComponentsBuilder.fromCurrentRequest().build().toString().

于 2015-03-11T10:06:00.890 回答
0

您可以ProxyPreserveHost在您的 httpd 配置中使用来保留原始Host标头,即您的外向域名,但我想不出一个好的方法来传递端口。

于 2015-03-11T10:06:38.523 回答