为什么不删除Server和X-Powered-By标头?

时间:2013-01-06 00:54:52

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

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

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

要删除Server标头,请在Global.asax中指定:

protected void Application_PreSendRequestHeaders(object sender, EventArgs e) {
  HttpContext.Current.Response.Headers.Remove("Server");
}

但是,回复仍包含两个标题:

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

如何删除它们?

4 个答案:

答案 0 :(得分:5)

我不确定为什么你的X-Powered-By没有被移除,但是今年早些时候的Windows Update补丁使得Application_PreSendRequestHeaders修补程序不再删除Server:标题对我们来说。

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

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

答案 1 :(得分:0)

如果您使用的是IIS 7,请在Global.asax中将DisableMvcResponseHeader属性设置为true,则应删除“X-Powered-By”标题

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

答案 2 :(得分:0)

主要是服务器IIS不允许我们删除服务器标签。您可以尝试使用以下代码来实现目标。 添加Global.asax

protected void Application_PreSendRequestHeaders()
{
    Response.Headers.Remove("X-AspNet-Version");
     HttpContext.Current.Response.Headers.Set("Server", "");
 }

此代码将删除您的&#34; X-AspNet-Version&#34;并将Server值设置为空白。

答案 3 :(得分:0)

X-Powered-By:ASP.NET通常通过简单的web.config配置删除:

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

ARR不受此配置的影响,必须通过IIS管理器,IIS根目录(而不是站点)上的Editor配置将其删除:转到system.webServer/proxy节点并设置{ {1}}至arrResponseHeader。在false之后,将其考虑在内。
我发现这是here,除了这篇文章是关于IIS 6.0的旧配置方式。

因此,对于您的情况,如果无法访问IIS设置,则必须要求服务器所有者调整其配置。或者尝试使用Url Rewrite solution,但当然要使用IISReset服务器变量。充其量只会充空白标题,而我还没有检查过它是否适用于ARR。