如何从 .net core 3.1 api 响应中删除 'Server' header?

How to remove 'Server' header from .net core 3.1 api response?

如何配置 .net core 3.1 应用程序以防止响应 'Server' header

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

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <security>
      <requestFiltering removeServerHeader="true" />
    </security>
  </system.webServer>
</configuration>

如果您想删除作为服务器 header 返回的 "Kestrel" 值,那么问题的正确答案是使用 KestrelServerOptions 执行此操作。

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

这就是您在 .NET Core 3.1 中关闭服务器 header 的方式,在 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>();
            });
}

在 .Net 6 中 ASP.Net 核心

builder.WebHost.ConfigureKestrel(options => options.AddServerHeader = false);