0

我有一个在 Azure Web Roles 中运行的网站。我针对 asafaweb.com 对该站点进行了测试,并收到了“过多的标题”警告。

asafaweb.com 截图

基本上,Azure 会发送 IIS 版本和 .net 版本作为标头的一部分。

有很多关于如何在 IIS 中关闭这些标头的信息,但是如何在 Azure 中关闭它们?

4

3 回答 3

3

这是我在大多数项目中用来隐藏这些标题的方法:

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()
    {

    }
}

网络配置

  <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>
于 2012-08-01T03:48:29.250 回答
2

如果您想要一个完整的解决方案来删除Azure上的所有多余标头,该解决方案也适用于 Cassini,而无需使用自定义 HttpModule,请参见此处:

在没有 UrlScan 的情况下删除/隐藏/禁用 Azure/IIS7 中过多的 HTTP 响应标头

于 2012-10-09T16:58:26.197 回答
1

Windows Azure Web 角色本质上是启用了 IIS 的 Windows Server 2008。因此,如果您想定制 IIS,您可以使用启动脚本并调用 appcmd 来更改您想要的设置(或以您通常使用的任何其他方式对其进行操作)。您的脚本将类似于:

%windir%\system32\inetsrv\appcmd set ...

于 2012-08-01T02:17:47.477 回答