【问题标题】:How to get original request URI in EL spring-boot page behind httpd proxypass如何在httpd proxypass后面的EL spring-boot页面中获取原始请求URI
【发布时间】:2015-05-12 16:49:12
【问题描述】:

我有一个带有嵌入式 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 配置中还是在控制器代码中?

【问题讨论】:

    标签: apache spring-boot el proxypass embedded-tomcat-7


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-08
        • 2017-10-12
        • 1970-01-01
        • 2011-12-06
        • 1970-01-01
        • 2013-01-10
        • 1970-01-01
        • 2020-02-13
        相关资源
        最近更新 更多