如何从.net核心3.1 API响应中删除“服务器”标头?

时间:2019-12-22 16:58:30

标签: asp.net-core-3.1 .net-core-3.1

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

2 个答案:

答案 0 :(得分:5)

如果要删除作为服务器标头返回的“ 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>();
            });
}

答案 1 :(得分:0)

将具有以下内容的web.config文件添加到Web项目中(您可能将其他内容合并到web.config文件中):

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