ASP.NET Core 2.1アプリケーションでServer Responseヘッダーを削除することは可能ですか(Server 2016でIIS 10)で実行されていますか?
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>
</sytem.webServer>
応答に対する最初の4つの変更は正常に機能しましたが、Serverヘッダーは削除されませんでした。まだ「ケストレル」が見えます
Kestrel Serverヘッダーは、リクエストパイプラインで追加されるのが遅すぎます。したがって、web.configまたはミドルウェアを介して削除することはできません。
AddServerHeaderプロパティ をfalse
の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
。
次のコンテンツを含むasp.netコアアプリケーションに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でサイトを再起動します。