Фильтрация узлов с помощью веб-сервера Kestrel для ASP.NET Core
Примечание.
Это не последняя версия этой статьи. В текущем выпуске см . версию .NET 8 этой статьи.
Предупреждение
Эта версия ASP.NET Core больше не поддерживается. Дополнительные сведения см. в статье о политике поддержки .NET и .NET Core. В текущем выпуске см . версию .NET 8 этой статьи.
Внимание
Эта информация относится к предварительному выпуску продукта, который может быть существенно изменен до его коммерческого выпуска. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
В текущем выпуске см . версию .NET 8 этой статьи.
Хотя 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 для работы с прокси-серверами и подсистемами балансировки нагрузки.
ASP.NET Core