在Azure / IIS7中如何删除/隐藏/禁用过多的HTTP响应头而无需UrlScan?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (98)

Azure有一个很好的解决方案,它不涉及从startup.cmd部署安装程序。

我明白,响应标题添加在不同的地方:

  • 服务器:由IIS添加。
  • X-AspNet-Version:在HttpResponse类中的Flush时由System.Web.dll添加
  • X-AspNetMvc版本:由System.Web.dll中的MvcHandler添加。
  • X-Powered-By:由IIS添加
提问于
用户回答回答于

可以将PreSendRequestHeaders和PreSendRequestContext事件与本机IIS模块一起使用,但不要将它们用于实现IHttpModule的托管模块。设置这些属性可能会导致异步请求问题。正确的版本是使用BeginRequest事件。

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        var application = sender as HttpApplication;
        if (application != null && application.Context != null)
        {
            application.Context.Response.Headers.Remove("Server");
        }
    }

要删除X-AspNet-Version,请在web.config中找到/创建<system.web>并添加:

  <system.web>
    <httpRuntime enableVersionHeader="false" />

    ...

要删除X-AspNetMvc-Version,请转到Global.asax,查找/创建Application_Start事件并添加一行,如下所示:

  protected void Application_Start()
  {
      MvcHandler.DisableMvcResponseHeader = true;
  }

要删除X-Powered-By,请在web.config中找到/创建<system.webServer>并添加:

  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <remove name="X-Powered-By" />
      </customHeaders>
    </httpProtocol>

    ...
用户回答回答于

MSDN发布了关于如何在Azure网站上隐藏标题的文章。现在可以通过向system.webServer添加条目来从web.config隐藏服务器

<security>
      <requestFiltering removeServerHeader ="true" />
</security>

尽管如此,VS将在上面皱眉。上面的链接有代码作为图片,很难找到。如上所述,MVC版本仍然隐藏在应用程序启动中,与x-powered-by和.Net版本相同。

扫码关注云+社区

领取腾讯云代金券