代码之家  ›  专栏  ›  技术社区  ›  eat-sleep-code

从ASP.NET Core 2.1应用程序中删除“服务器”头

  •  6
  • eat-sleep-code  · 技术社区  · 6 年前

    是否可以拆下 服务器 ASP.NET Core 2.1应用程序中的响应头(使用IIS 10在Server 2016上运行)?

    我尝试在web.config中输入以下内容:

    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name="X-Frame-Options" value="sameorigin" />
                <add name="X-XSS-Protection" value="1; mode=block" />
                <add name="X-Content-Type-Options" value="nosniff" />
                <remove name="X-Powered-By" />
                <remove name="Server" />
            </customHeaders>
        </httpProtocol>
    </system.webServer>
    

    服务器

    2 回复  |  直到 5 年前
        1
  •  41
  •   Tabish Usman Nudier Mena    4 年前

    Kestrel服务器头在请求管道中添加得太晚。因此,不可能通过web.config或中间件删除它。

    您可以通过设置 AddServerHeader property false KestrelServerOptions

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseKestrel(options => options.AddServerHeader = false)
                .UseStartup<Startup>();
    
        2
  •  50
  •   vladimir    5 年前

    此解决方案适用于iis10+版本,并允许删除 x-powered-by server 服务器响应中的标头。

    removeServerHeader

    我们需要创造 web.config

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.webServer>
        <security>
          <requestFiltering removeServerHeader="true" />
        </security>
        <httpProtocol>
          <customHeaders>
            <remove name="X-Powered-By" />
          </customHeaders>
        </httpProtocol>
      </system.webServer>
    </configuration>
    

    然后在IIS上发布应用程序并重新启动站点。

        4
  •  4
  •   nilobarp    5 年前

    对于Dotnet Core 3.1 UseKestrel 是的一部分 ConfigureWebHostDefaults CreateDefaultBuilder 在早期版本中。

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>()
                          .UseKestrel(options => options.AddServerHeader = false);
            });