web-dev-qa-db-ja.com

Request.Url.GetLeftPart(UriPartial.Authority)がhttpsサイトでhttpを返す

Request.Url.GetLeftPart(UriPartial.Authority)を使用して、サイトのドメイン部分を取得します。これにより、httpでの要件が満たされました。最近サイトをhttpsに変更しましたが(約3日前)、これはまだhttp://で戻ります。URLはすべてhttpsに変更され、ブラウザのアドレスバーに表示されました。

なぜこれが起こるのか?

14
kapz

次の例は正常に動作し、「https」の文字列を返します。

var uri = new Uri("https://www.google.com/?q=102njgn24gk24ng2k");
var authority = uri.GetLeftPart(UriPartial.Authority);
// authority => "https://www.google.com"

ここのHttpContextクラスに問題があるか、すべてのリクエストがまだhttpを使用しています:

  1. リクエストを確認できますHttpContext.Current.Request.IsSecureConnectionプロパティ。それがtrueであり、GetLeftPartメソッドがhttpを返す場合、ここでの置き換えは回避できないと思います。
  2. すべての要求に実際にhttpが付いている場合は、IISで安全な接続を強制することができます。

また、着信URLを検査し、デバッグのためにどこかに記録する必要があります。

21
Herdo

SSLオフロードを使用したARRからのリクエストの場合、Request.Url.GetLeftPart(UriPartial.Authority)はhttpを取得するだけです

1
heavenwing

これは、ロードバランサーを処理するときにも発生する可能性があります。私が取り組んだ1つの状況では、すべてのhttpsリクエストがロードバランサーによってhttpに変換されました。ブラウザーのアドレスバーにはまだhttpsと表示されていますが、内部的にはhttpリクエストであるため、GetLeftPart()に対するサーバー側の呼び出しはhttpを返します。

1
Greg