filtrování hostitele pomocí ASP.NET Coreho Kestrel webového serveru
I když Kestrel podporuje konfiguraci na základě prefixů http://example.com:5000 , jako je, Kestrel z velké části se název hostitele ignoruje. Hostitel localhost je zvláštní případ, který se používá pro vazbu na adresy zpětné smyčky. Každý hostitel, který je jiný než explicitní IP adresa, se váže na všechny veřejné IP adresy. Host hlavičky nejsou ověřené.
Jako alternativní řešení použijte middleware pro filtrování hostitele. Middleware je přidána pomocí CreateDefaultBuilder , který volá 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>();
}
Middleware pro filtrování hostitele je ve výchozím nastavení zakázáno. Chcete-li povolit middleware, definujte AllowedHosts klíč v appsettings.json / appSettings. <EnvironmentName> . JSON. Hodnota je seznam názvů hostitelů oddělených středníkem bez čísel portů:
appsettings.json:
{
"AllowedHosts": "example.com;localhost"
}
Poznámka
Middleware předávaných hlaviček má také AllowedHosts možnost. Middleware předávaných hlaviček a middleware pro filtrování hostitele mají podobné funkce pro různé scénáře. Nastavení AllowedHosts pomocí předávaných middlewarových hlaviček je vhodné v případě, že Host Hlavička není zachována při předávání požadavků pomocí reverzního proxy server nebo nástroje pro vyrovnávání zatížení. Nastavení AllowedHosts pomocí middlewaru pro filtrování hostitele je vhodné Kestrel , pokud se používá jako veřejný hraniční Server nebo když Host je hlavička přímo předána.
Další informace o middlewaru předávaných hlaviček najdete v tématu Konfigurace ASP.NET Core pro práci s proxy servery a nástroji pro vyrovnávání zatížení .