Фильтрация узлов с помощью веб-сервера Kestrel для ASP.NET Core

Хотя Kestrel поддерживает конфигурации с использованием префиксов, например http://example.com:5000, Kestrel в основном не учитывает имя узла. Узел localhost является особым случаем, используемым для привязки к адресам замыкания на себя. Любой узел, отличный от явного IP-адреса, привязывается ко всем общедоступным IP-адресам. Заголовки Host не проверяются.

В качестве обходного решения используйте ПО промежуточного слоя фильтрации узлов. ПО промежуточного слоя добавляется в 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>();
}

ПО промежуточного слоя фильтрации узлов отключено по умолчанию. Чтобы включить ПО промежуточного слоя, определите ключ AllowedHosts в appsettings.json/appsettings.{Environment}.json. Значение представляет собой разделенный точками с запятой список имен узлов без номеров портов:

appsettings.json:

{
  "AllowedHosts": "example.com;localhost"
}

Примечание.

ПО промежуточного слоя перенаправления заголовков имеет также параметр AllowedHosts. ПО промежуточного слоя перенаправления заголовков и ПО промежуточного слоя фильтрации узлов обладают сходными возможностями для различных сценариев. Параметр AllowedHosts с ПО промежуточного слоя перенаправления заголовков подходит для случаев, когда заголовок Host не сохраняется при переадресации запросов с помощью обратного прокси-сервера или подсистемы балансировки нагрузки. Параметр AllowedHosts с ПО промежуточного слоя фильтрации узлов применим, когда Kestrel используется в качестве общедоступного пограничного сервера или если заголовок Host пересылается напрямую.

Дополнительные сведения о ПО промежуточного слоя перенаправления заголовков см. в разделе Настройка ASP.NET Core для работы с прокси-серверами и подсистемами балансировки нагрузки.