2009-06-15 19 views
20

Request.IsSecureConnectionがtrueであることを確認するaspxページがあり、そうでなければhttps://www.domain.com/page.aspxのセキュアページへのリダイレクトはありません。trueの場合、Request.IsSecureConnectionがfalseを返すのはなぜですか?

サーバーにはドメイン用のSSL証明書がインストールされており、ブラウザには南京錠アイコンが表示されます。

異なるサーバーで同じコードが正常に実行されましたが、Request.IsSecureConnectionは常にfalseを返します。

完全に空のaspxファイルを作成しましたが、これは単にRequest.IsSecureConnectionの戻り値を出力しますが、それでもfalseであるため、標準のhttp要求からの他のコンテンツはありません。

誰かがこれを引き起こしている可能性がありますか、またはこれが原因で常にfalseを返す原因を見つけ出す可能性があるというヒントを教えてください。

答えて

28

ロードバランシングルーターなどがWebサーバーの前にssl終了の場合、そこからWebサーバーへの接続はSSL経由で行われません。この場合、通常、特定のポート上の接続、またはロードバランサによって設定されているヘッダーの接続を確認する必要があります。

+3

または、クライアントからWebサイトへの接続が確実に行われるように、ロードバランサまで任せてください。 –

+0

この疑惑を確認するには、そのテストページにRequest.UserHostAddressおよび/またはRequest.UserHostNameを出力する必要があります。これらの値が接続先のクライアント(またはクライアントが通過するプロキシ)でない場合、Webサーバーの前に座っている何らかの種類のロードバランサまたはリバースプロキシを識別する可能性があります。 –

+0

Request.UserHostAddressとRequest.UserHostNameはどちらも自分のIPアドレスを返します。 – Will

1

一部のロードバランサは、クライアントからの元の要求がSSLを経由したかどうかを判断するために使用できる新しいヘッダーを要求に追加します。 AzureのWebサイトでは、次のコードが動作していると思われます。他のロードバランサの中には、X-Forwarded-Protoなどの別のヘッダを使用するものがあります。

+0

私たちは別のデータポイントのためだけに "SSLSessionID"を使用します。 –

関連する問題