如何去掉IIS中Response Headers的X-Powered-By、X-AspNet-Version和Server项

使用IIS作为web服务器时,输出的aspx页面的response headers中总是会自动带上X-Powered-By、X-AspNet-Version和Server这几个项。而使用其他web服务器时,往往能 获得更加简洁的response headers。对于高负载的网站来说,能节省几个response header项,应该也能节省客观的流量。而从程序员的角度来说,要这些header项出来,一则暴露了网站程序所使用的版本,二来也破坏了简单之上的原 则。因此,一直都在寻找去掉他们的办法。

9588.com是一个典型的以IIS为服务器的网站,通过Firebug可查看其首页的Response Headers:

如何去掉IIS中Response Headers的X-Powered-By、X-AspNet-Version和Server项_第1张图片

再来看看鲜果热文的Response Headers,使用的服务器为ngix,相对来说,要简洁得多了:

如何去掉IIS中Response Headers的X-Powered-By、X-AspNet-Version和Server项_第2张图片

那么,是不是IIS中这些header项不能去掉呢?当然不是,看看ctrip.com的首页的Response Headers就可以知道:

如何去掉IIS中Response Headers的X-Powered-By、X-AspNet-Version和Server项_第3张图片

暂且不去管这其中技术人员的差异,只管来考虑如何去掉这几个项好了。

一、去掉headers中的X-Powered-By

这个是最简单的,因为在IIS里查看网站的“属性”,选择“HTTP头”选项卡就能看到在“自定义HTTP头”中有“X-Powered-By”选项,直接把它删除掉就OK了。

如何去掉IIS中Response Headers的X-Powered-By、X-AspNet-Version和Server项_第4张图片


二、去掉Headers中的X-AspNet-Version


X-AspNet-Version的去掉似乎从IIS的选项里边找不到,因此也就变得复杂些。不过网上还是会有对策。在一篇Remove the X-AspNet-Version header 的文章就明确给出了问题的答案:
只要在web.config文件里的节里增加 即可。
msdn里边是这么解释这个选项的含义的:

enableVersionHeader

可选的 Boolean 属性。

指定 ASP.NET 是否应输出版本标头。Microsoft Visual Studio 2005 使用该属性来确定当前使用的 ASP.NET 版本。对于生产环境,该属性不是必需的,可以禁用。

说明:该属性在 .NET Framework 1.0 中不可用。

默认值为 True

三、去掉Headers中的Server
这个项的去掉就可有可无了,而且作为一种对web服务器自身的标识,肯定不愿意让用户能轻而易举地去掉。不过,在
How to remove Server Header on IIS5.0/6.0 这篇文章中,我们还是能找到解决问题的办法:

从http://www.microsoft.com/technet/security/tools/urlscan.mspx 下载urlscan,安装,找到../inetsrv/urlscan/urlscan.ini 文件中的 RemoveServerHeader 属性,将其设为1即可。

这个软件的最新版本是2.5,下载以后,发现还没有提供对IIS7的支持。

你可能感兴趣的:(ASP.NET)