Azure Web ロールで実行されている Web サイトがあります。サイトを asafaweb.com に対してテストしたところ、「過剰なヘッダー」という警告が表示されました。
基本的に、Azure は IIS のバージョンと .net のバージョンをヘッダーの一部として送信します。
IIS でこれらのヘッダーをオフにする方法については多くの情報がありますが、Azure でそれらをオフにするにはどうすればよいですか?
Azure Web ロールで実行されている Web サイトがあります。サイトを asafaweb.com に対してテストしたところ、「過剰なヘッダー」という警告が表示されました。
基本的に、Azure は IIS のバージョンと .net のバージョンをヘッダーの一部として送信します。
IIS でこれらのヘッダーをオフにする方法については多くの情報がありますが、Azure でそれらをオフにするにはどうすればよいですか?
これは、これらのヘッダーを非表示にするためにほとんどのプロジェクトで使用するものです。
Global.asax.cs (MVC プロジェクトにのみ適用)
protected void Application_Start()
{
MvcHandler.DisableMvcResponseHeader = true;
}
カスタム HttpModule
public class RemoveHeadersHttpModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.PreSendRequestHeaders += OnPreSendRequestHeaders;
}
private void OnPreSendRequestHeaders(object sender, EventArgs e)
{
HttpContext.Current.Response.Headers.Remove("Server");
HttpContext.Current.Response.Headers.Remove("X-AspNet-Version");
}
public void Dispose()
{
}
}
web.config
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="Server" />
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
<modules runAllManagedModulesForAllRequests="true">
. . .
<add name="RemoveHeadersHttpModule" type="MyNamespace.RemoveHeadersHttpModule"/>
</modules>
. . .
</system.webServer>
カスタムHttpModuleを使用せずにCassiniでも機能する、 Azure上のすべての過剰なヘッダーを削除する完全なソリューションが必要な場合は、次を参照してください。
Windows Azure Webロールは、基本的にWindows Server 2008であり、IISが有効になっています。したがって、IISを調整する場合は、起動スクリプトを使用してappcmdを呼び出し、必要な設定を変更できます(または、通常の方法で操作できます)。スクリプトは次のようになります。
%windir%\system32\inetsrv\appcmd set ...