过去你可以使用Microsoft 的 UrlScan例如,修改标题并删除显示的 IIS 版本。
这不适用于 IIS 7.5,IIS 7.0 是支持的最新版本。我还有没有什么方法可以删除一些响应标头?
运行安装了 IIS7.5 的 Windows Server 2008。
答案1
您可以使用 IIS Native-Code 模块删除 IIS 7.5 中的任何标头(事实上,相同的模块应该适用于 IIS 7.0 - 8.5)。
Native-Code 模块与更常见的托管模块不同,因为它们是使用 win32 API 而不是 ASP.NET 编写的。它们适用于所有请求,包括静态页面和图像。
以下文章提供了用于删除 IIS 7.0 至 8.5 中的标头的示例 Native-Code 模块的二进制文件和源代码。此模块是一个简单的 MSI 安装,默认情况下将删除“服务器”“X-Powered-By”和“AspNet 版本”标头。可以使用 IIS 配置删除其他标头。
http://www.dionach.com/blog/easily-remove-unwanted-http-headers-in-iis-70-to-85
答案2
网络上有很多资源可以解释如何做到这一点。仅举一个例子:
- https://stackoverflow.com/questions/1178831/remove-server-response-header-iis7
- 如何删除 IIS/ASP.NET 响应标头
然而,我承认其中大多数并不适用于所有情况:
- 这取决于您是否有权访问
Global.asax.cs
文件源代码。 - 该
Global.asax
方法只适用于使用 开发的网站ASP.NET
。那么如果你的网站只有静态html
页面,并且css
或 怎么办js
? - 该
web.config
方法将无法删除Server Version
标题。
就我而言,我已决定摆脱所有与开发相关的解决方法。
我选择了这种URL Rewrite
方法,因此我完全独立于 Web 开发人员(如果有的话)和ASP.NET
开发HTML
。
删除标题X-Powered-By
:
- 在 中
IIS Manager
,导航到您的网站 - 选择
HTTP Response Header
- 选择
X-Powered-By
并点击Remove
为了删除Server Version
标题,我使用了URL Rewrite
Microsoft 的扩展:
Server Version
然后我定义了一个出站规则,用空值重写。但我也可以写一个错误的值,如Apache
或unknown
;)
我希望,像我一样,您会发现这些链接对于实现我所说的内容非常有用:
- https://learn.microsoft.com/en-us/archive/blogs/varunm/remove-unwanted-http-response-headers
- https://web.archive.org/web/20210506093425/http://www.4guysfromrolla.com/articles/120209-1.aspx
- http://www.troyhunt.com/2012/02/shhh-dont-let-your-response-headers.html
最后,我自己还没有测试过,但似乎你仍然可以UrlScan
使用IIS7.5/8
: