1

RequireHttpsAttributeが設定されたAzureで.NETCore RC2 Webアプリケーションが動作するようになっていますが、問題が発生しています。.NETCoreでRequireHttpsAttributeを使用すると、AzureでHTTP302リダイレクトループが発生する

私は自分のコードでこの問題が発生する可能性を排除するために、最小限のものに戻し、 "out of box" VS2015 .NETCore RC2テンプレートを使用して再作成しました。

標準のVS2015 .NETCore RC2 Webアプリケーションをデプロイすると、サイトは正常に動作します。 [RequireHttps]をコントローラに追加すると、ローカルで正常に動作しますが、AzureではHTTP302リダイレクトループが発生します。これは、RC1でAzureでRequireHttpsAttributeが正常に動作して以来、RC1以降に変更されたようです。

HTTP Error 310 ERR_TOO_MANY_REDIRECTS with RequireHttpsAttribute ASP.NET Coreでも同様の質問がありますが、質問がRC1またはRC2について話しているかどうかはわかりませんが(実際はRC2と思われます)、唯一の回答はRC1にのみ適用されます。

AWSのリダイレクトループを引き起こすこの属性についても同様の質問があります。RequireHttps causes redirect loop on Amazon Elastic Load Balancerですが、これはMVC4であり、Azureでは使用されていないヘッダーも含まれています。

+0

あなたはHTTPS永続的にリダイレクトにHTTPが必要ですか? –

+0

種類。 RequireHttps属性のポイントは、要求がHTTPS経由で受信されたことを確認する認証フィルタです。そうでなければ、それはGETであり、HTTPSバージョンのURIにリダイレクトします。 GETでなければHTTP403を返します。これは.NETの標準的な部分ですが、なんらかの理由でAzureはHTTPS要求がHTTPであると判断し、HTTPS要求をHTTPSエンドポイントにリダイレクトしてリダイレクトループを引き起こします – VaticanUK

+0

属性のコードを見ると、それはfilterContext.HttpContext.Request.IsHttpsが真であるべきときfalseを返さなければならないと思われます – VaticanUK

答えて

3

AzureとASP.NET Core RC2には現在、bugがあり、KestrelとIISがどのように接続されているか、HTTPSヘッダーはHTTPS要求かどうかに関係しています。

私は、バグが完了とマークされているため、すぐにRTMで解決される可能性があることを理解しています。

web.configを使用すると、HTTPリクエストからHTTPSへの永続的なリダイレクトを行うことができます。 dotnet-transformパッケージを使用して、パブリッシュ時のみリダイレクトを挿入します(デキュー環境ではローカルに適用されません)。これは、FYIとして必要な場合はオプションです。

+0

それは問題のようです...私はちょっと後でチェックして、報告します!ポインタをありがとう! – VaticanUK

1

あなたはStartup.csにConfigureServicesに次の行を追加することでこの問題を回避することができます(と追加「Microsoft.AspNetCore.HttpOverridesを使用して;」)

services.Configure<ForwardedHeadersOptions>(options => 
     { 
      options.ForwardedHeaders = ForwardedHeaders.XForwardedProto; 
     }); 
関連する問題