Asp.net-Core

從 ASP.NET Core 2.1 應用程序中刪除“伺服器”標頭

  • September 21, 2018

是否可以刪除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>

對 Response 的前四個更改工作正常,但未刪除**Server標頭。**我仍然看到“紅隼”

Kestrel 伺服器標頭在請求管道中添加得太晚了。因此無法通過 web.config 或中間件刪除它。

您可以通過將AddServerHeader 屬性設置為falseon來刪除伺服器標頭KestrelServerOptions,這可以在 Program.cs 中完成。

   public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
       WebHost.CreateDefaultBuilder(args)
           .UseKestrel(options => options.AddServerHeader = false)
           .UseStartup<Startup>();

此解決方案適用於 IIS 10+ 版本,並允許在伺服器響應中刪除x-powered-by和標頭。server

在 IIS 10 中添加了一個新屬性:removeServerHeader.

我們需要web.config在 asp.net 核心應用程序中創建具有以下內容的文件:

<?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 上發布應用程序並重新啟動站點。

引用自:https://stackoverflow.com/questions/52452194