如何在 Asp.Net 核心 2.2.1 Web 应用程序中删除服务器 Header?

How to remove Server Header in Asp.Net Core 2.2.1 Web App?

我正在使用 Asp.Net Core 2.2.1。我正在尝试从响应中删除 server Header。我尝试在 ConfigureKestrel() 中添加 options.AddServerHeader = false;,但仍然没有成功。请帮助我解决我哪里出错了。

这是我的代码:

Program.cs

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

        public static IWebHostBuilder CreateWebHostBuilder(string[] args)
        {
            return WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .ConfigureKestrel((context,options) => {
                    // Set properties and call methods on options
                    options.AddServerHeader = false;
                });
        }
    }

Web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <!-- To customize the asp.net core module uncomment and edit the following section. 
  For more info see https://go.microsoft.com/fwlink/?linkid=838655 -->
  <system.webServer>
    <security>
      <requestFiltering removeServerHeader="true" />
    </security>
    <handlers>
      <remove name="aspNetCore" />
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess">
      <environmentVariables>
        <environmentVariable name="ASPNETCORE_HTTPS_PORT" value="44342" />
        <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
      </environmentVariables>
    </aspNetCore>
    <httpProtocol>
      <customHeaders>
        <remove name="X-Powered-By" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>

Response Image

谢谢,

阿卜杜勒

如果您的应用程序在 Kestrel 上 运行,则使用 options.AddServerHeader = false; 调用 ConfigureKestrel 只会删除服务器 header。当您在 IIS/IISExpress 上托管您的应用程序时,您需要使用以下设置添加 web.config

<configuration> 
  <system.webServer>
    <security>
      <requestFiltering removeServerHeader="true" />
    </security>
    <httpProtocol>
      <customHeaders>
        <remove name="X-Powered-By" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>

这一行 <requestFiltering removeServerHeader="true" /> 可以解决问题。此外,您还可以删除自定义 headers,例如 X-Powered-By,如果您愿意,可以在 httpProtocol

下添加 customHeaders 部分

请确保您已启用请求过滤

希望对您有所帮助。

我们可以使用 URLRewrite 来做到这一点。请注意,这不会一起删除 header,但会删除它的值。

步骤如下:

步骤 1. 安装 URLRewrite。要安装 URLRewrite,请转到以下 link

http://www.iis.net/downloads/microsoft/url-rewrite

第 2 步。打开您要删除服务器的站点 header 并单击 URLRewrite 部分。

步骤 3. 单击右侧“操作”窗格中的“查看服务器变量”。

步骤 4. 单击“添加”按钮,然后在提供的文本框中输入“RESPONSE_SERVER”。

第5步。现在我们需要创建出站规则。想知道如何创建出站规则,看下面link

http://www.iis.net/learn/extensions/url-rewrite-module/creating-outbound-rules-for-url-rewrite-modul...

步骤 6. 创建出站规则如下。

请注意,这是一个 website-specific 规则。如果要为所有应用程序创建规则,请在服务器级别创建规则。此外,某些应用程序,尤其是第三方应用程序,可能需要服务器 header,因此您可能需要为这些应用程序删除此规则。