如何从http或https请求中获取带有端口的主机名

如何从http或https请求中获取带有端口的主机名,第1张

如何从http或https请求中获取带有端口的主机名

您可以使用

HttpServletRequest.getScheme()
来检索“ http”或“ https”。

连同它一起使用

HttpServletRequest.getServerName()
应该足以重建所需的URL部分。

如果您使用标准端口(HTTP为80,HTTP为443),则无需在URL中显式放置端口。

编辑
:如果您的servlet容器位于终止SSL的反向代理或负载平衡器的后面,则这会有些棘手,因为将请求作为纯http转发到servlet容器。您有几种选择:

1)

HttpServletRequest.getHeader("x-forwarded-proto")
改为使用;仅当您的负载平衡器正确设置了标头(Apache应该afaik)时,此方法才有效。

2)在JBoss /
Tomcat中配置一个RemoteIpValve,它将

getScheme()
按预期工作。同样,这仅在负载均衡器设置了正确的标头时才有效。

3)如果上述方法不起作用,则可以在Tomcat /
JBoss中配置两个不同的连接器,一个用于http,另一个用于https,如本文所述。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5615553.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存