asp.net - 为什么不删除 Server 和 X-Powered-By header ?

标签 asp.net iis web-config http-headers global-asax

我的 ASP.NET 4.5 应用程序正在部署到共享主机,因此我无权访问 IIS 设置。删除 X-Powered-By header ,我在 web.config 中指定:

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

并删除 Server header ,我在 Global.asax 中指定:
protected void Application_PreSendRequestHeaders(object sender, EventArgs e) {
  HttpContext.Current.Response.Headers.Remove("Server");
}

但是,响应仍然包含两个 header :

Cache-Control:private
Content-Encoding:deflate
Content-Length:672
Content-Type:text/html; charset=utf-8
Date:Sun, 06 Jan 2013 00:41:20 GMT
Server:Microsoft-IIS/7.5
X-Powered-By:ARR/2.5
X-Powered-By:ASP.NET

我怎样才能删除它们?

最佳答案

我不知道为什么你的 X-Powered-By没有被删除,但今年早些时候的一个 Windows 更新补丁使得 Application_PreSendRequestHeaders修复不再删除 Server:我们的标题。

我们必须在 system.webServer 中添加一个部分使用 IIS URL Rewrite Module 2 阻止(在 Web.config 中) :

<rewrite>
    <outboundRules>
        <rule name="Remove RESPONSE_Server">
            <match serverVariable="RESPONSE_Server" pattern=".+"/>
            <action type="Rewrite" value=""/>
        </rule>
    </outboundRules>
</rewrite>

关于asp.net - 为什么不删除 Server 和 X-Powered-By header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14178168/

相关文章:

c# - MySql 从列中选择所有数据并计数

c# - IIS 应用程序池在 Azure 负载平衡 VM 上崩溃

wcf - 允许基于 web.config 中设置的组访问 WCF

.net - 加密 web.config 毫无意义吗?

c# - 启动、停止线程

JQuery UI 对话框和 OnClick 事件

c# - ListView - 在空数据源上显示 LayoutTemplate

web-services - 在同一目录中混合使用匿名和 Windows 身份验证的 Web 服务

c# - MVC 3 Multi-Tenancy 和 View 编译缓存问题

asp.net - Web.config 允许特定用户访问位置