Note
これは、この記事の最新バージョンではありません。 現在のリリースについては、 この記事の .NET 10 バージョンを参照してください。
警告
このバージョンの ASP.NET Core はサポート対象から除外されました。 詳細については、 .NET および .NET Core サポート ポリシーを参照してください。 現在のリリースについては、 この記事の .NET 10 バージョンを参照してください。
Kestrel は http://example.com:5000 などのプレフィックスに基づく構成をサポートしますが、Kestrel はほとんどのホスト名を無視します。 ホスト localhost は、ループバック アドレスへのバインドに使用される特殊なケースです。 明示的な IP アドレス以外のすべてのホストは、すべてのパブリック IP アドレスにバインドします。
Host ヘッダーは検証されません。
これを解決するには、Host Filtering Middleware を使用します。 ミドルウェアは CreateDefaultBuilder によって追加され、そこでは AddHostFiltering が呼び出されます。
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
Host Filtering Middleware は既定では無効です。 このミドルウェアを有効にするには、AllowedHostsappsettings.json/ で appsettings.{Environment}.json キーを定義します。 この値は、ポート番号を含まないホスト名のセミコロン区切りリストです。
appsettings.json:
{
"AllowedHosts": "example.com;localhost"
}
Note
Forwarded Headers Middleware にも AllowedHosts オプションがあります。 Forwarded Headers Middleware および Host Filtering Middleware には、異なるシナリオ用に類似した機能があります。 リバース プロキシ サーバーまたはロード バランサーを使用して要求を転送するとき、AllowedHosts ヘッダーが保存されていない場合、Forwarded Headers Middleware に Host を設定するのが適切です。
AllowedHosts が一般向けエッジ サーバーとして使用されていたり、Kestrel ヘッダーが直接転送されたりしている場合、Host Filtering Middleware に Host を設定するのが適切です。
Forwarded Headers Middleware の詳細については、「プロキシ サーバーとロード バランサーを使用するために ASP.NET Core を構成する」を参照してください。
ASP.NET Core