3
我只想獲取當前URL是在HTTP還是HTTPS下。問題是我們在我們的測試環境中有許多自簽名證書,因此驗證證書可能性不是一種選擇。我已經嘗試了以下方法,但是在所有情況下都沒有效果。從當前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」 - 但我假設有這樣做的真正支持的方式。
[java ee doc](http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html#isSecure%28%29)說'isSecure()'返回一個布爾值,指示是否此請求是使用安全通道(例如HTTPS)完成的。它似乎並不關心自簽名證書。 – Haozhun
只是猜測,但你有沒有嘗試過這與真正的簽名證書?也許它返回false,因爲自簽名證書不安全。 –
'isSecure'應該可以工作,但它也取決於您的環境,例如您的HTTP反向代理配置。任何守護你的應用服務器的HTTP服務器? – home