6

我的 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

4 回答 4

6

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

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

<rewrite>
    <outboundRules>
        <rule name="Remove RESPONSE_Server">
            <match serverVariable="RESPONSE_Server" pattern=".+"/>
            <action type="Rewrite" value=""/>
        </rule>
    </outboundRules>
</rewrite>
于 2013-05-14T12:44:22.480 回答
1

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

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

一个ARR不受此配置影响,它必须通过 IIS 管理器、IIS 根目录上的编辑器配置(不在站点上)删除:转到system.webServer/proxy节点并设置arrResponseHeaderfalse. 在 之后IISReset,它被考虑在内。
我在这里找到了这个,除了这篇文章是关于旧的 IIS 6.0 配置方式的。

因此,对于您的情况,如果无法访问 IIS 设置,您将不得不要求服务器所有者调整他的配置。或者尝试使用Url Rewrite 解决方案,但当然要使用HTTP_X_Powered_By服务器变量。它充其量只会空白标题,我还没有检查它是否适用于 ARR 案例。

于 2019-03-01T17:53:16.833 回答
0

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

protected void Application_Start()
{
    MvcHandler.DisableMvcResponseHeader = true;
}
于 2013-01-06T01:42:33.203 回答
0

大多数情况下,服务器 IIS 不允许我们删除服务器标签。您可以尝试以下代码来实现您的目标。添加 Global.asax

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

此代码将删除您的“X-AspNet-Version”并将服务器值设置为空白。

于 2017-07-07T05:31:07.977 回答