我的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
如何删除它们?
答案 0 :(得分:5)
我不确定为什么你的X-Powered-By
没有被移除,但是今年早些时候的Windows Update补丁使得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>
答案 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。