3

如何配置 .net core 3.1 应用程序以防止响应标头中出现“服务器”

4

3 回答 3

10

如果要删除作为服务器标头返回的“Kestrel”值,则该问题的正确答案是使用 KestrelServerOptions 执行此操作。

虽然可以使用 web.config,但不让运行时添加标头更合适。

这是在 .NET Core 3.1 中关闭服务器标头的方法,在 Program.cs 的 ConfigureWebHostDefaults 方法中添加 ConfigureKestrel 调用:

webBuilder.ConfigureKestrel(serverOptions =>
{
   serverOptions.AddServerHeader = false;
});

这是一个完整的示例,用于设置可以添加它的上下文:

public class Program
{
   public static void Main(string[] args)
   {
      CreateHostBuilder(args).Build().Run();
   }

   public static IHostBuilder CreateHostBuilder(string[] args) =>
         Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
               webBuilder.ConfigureKestrel(serverOptions =>
               {
                  serverOptions.AddServerHeader = false;
               });

               webBuilder.UseStartup<Startup>();
            });
}
于 2020-04-29T12:46:35.063 回答
7

将包含此内容的文件添加web.config到 Web 项目(您可能会将其他内容合并到web.config文件中):

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <security>
      <requestFiltering removeServerHeader="true" />
    </security>
  </system.webServer>
</configuration>
于 2019-12-22T18:39:57.800 回答
0

在 .Net 6 ASP.Net 核心

builder.WebHost.ConfigureKestrel(options => options.AddServerHeader = false);
于 2022-02-08T22:36:12.480 回答