您可以使用
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,如本文所述。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)