3

現在の 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」の文字列を検索できると思いますが、これを行うには本当にサポートされている方法があると思います。

4

1 に答える 1

2

自己署名証明書と公式証明書のどちらを使用するかは関係ありません。SSL / TLSがデプロイメントコンテナで終了していない場合、「isSecure()」はデフォルトで「false」を返します。ただし、Tomcatなどの一部のデプロイメント・コンテナーは、SSL / TLSがデプロイメント・コンテナーで終了されていない場合でも、「isSecure()」呼び出しに対して「true」を返すように構成できます。たとえば、SSLが(ハードウェア-)ロードバランサーで終了し、「sendRedirect()」が相対URLで使用されている場合に役立ちます。

于 2012-10-20T20:04:32.180 に答える