从当前URL获取HTTP或HTTPS

时间:2012-10-20 15:07:40

标签: java jsp

我只是想知道当前的URL是在HTTP还是HTTPS下。问题是我们在测试环境中有许多自签名证书,因此无法验证证书问题。我已尝试过以下内容,但似乎并不是在所有情况下都能正常工作。

String protocol = request.getProtocol();
out.println(protocol); // prints out HTTP/1.1 on self signed servers

Boolean secure = ((HttpServletRequest)pageContext.getRequest()).isSecure();
if (secure) {
  out.println("secure")
} else {
  out.println("not secure")  // always fails
}

我想我可以使用getRequest并在字符串中搜索“https” - 但我假设有一种真正支持的方法。

1 个答案:

答案 0 :(得分:2)

使用自签名或官方证书无关紧要。如果未在部署容器中终止SSL / TLS,则isSecure()将默认返回“false”。但是,某些部署容器(如Tomcat)可以配置为“isSecure()”调用返回“true”,即使SSL / TLS未在部署容器中终止也是如此。例如。如果SSL在(硬件)负载均衡器处终止且“sendRedirect()”与相对URL一起使用,这将非常有用。