Filtrování hostitelů s webovým serverem ASP.NET Core Kestrel
Přestože Kestrel podporuje konfiguraci založenou na předponách, jako http://example.com:5000
je , Kestrel z velké části ignoruje název hostitele. Hostitel localhost
je speciální případ používaný pro vazbu na adresy zpětné smyčky. Jakýkoli jiný hostitel než explicitní IP adresa je svázaný se všemi veřejnými IP adresami. Host
hlavičky nejsou ověřeny.
Jako alternativní řešení použijte middleware filtrování hostitelů. Middleware se přidá voláním CreateDefaultBuilderAddHostFiltering:
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
Middleware filtrování hostitelů je ve výchozím nastavení zakázaný. Chcete-li povolit middleware, definujte AllowedHosts
klíč v/appsettings.json
appsettings.{Environment}.json
. Hodnota je seznam názvů hostitelů oddělený středníkem bez čísel portů:
appsettings.json
:
{
"AllowedHosts": "example.com;localhost"
}
Poznámka
Middleware forwarded Headers má AllowedHosts také možnost. Middleware předávané hlavičky a middleware filtrování hostitelů mají podobné funkce pro různé scénáře. Nastavení AllowedHosts
middlewaru Forwarded Headers je vhodné, když Host
se hlavička nezachová při předávání požadavků pomocí reverzního proxy serveru nebo nástroje pro vyrovnávání zatížení. Nastavení AllowedHosts
middlewaru filtrování hostitelů je vhodné, pokud Kestrel se používá jako veřejný hraniční server nebo když se hlavička Host
přímo předá.
Další informace o middlewaru Forwarded Headers najdete v tématu Konfigurace ASP.NET Core pro práci s proxy servery a nástroji pro vyrovnávání zatížení.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro