<security>
<requestFiltering removeServerHeader ="true" />
</security>
这样你就不需要纠结于复杂的出站重写规则。
要移除ASP.NET的X-Powered-By头,仍需要如上所述的customHeaders部分。
来源:https://www.saotn.org/remove-iis-server-version-http-response-header/
Aristos的评论很好地回答了为什么不允许轻易修改此值。
这归结于微软不希望人们轻易地修改此值,无论出于营销或其他目的,都可以自行解释。
从那次讨论中可以得出一个重要结论,即修改服务器标头对于任何安全方面都没有用处。有无数种方法可以检测到正在运行的Web服务器软件的类型(和版本)。
这只留下了一个原因:节省字节数。除非您运行的是极高流量的站点,否则这不是一个问题。如果您正在运行高流量站点,则很可能已经运行了一个或多个自定义模块。
这个例子并没有真正删除“server”头,只是在上面写了其他内容。
更好的标题是 "IIS7如何发送自定义的“Server”http头"。阅读这篇类似的文章 http://blogs.technet.com/b/stefan_gossner/archive/2008/03/12/iis-7-how-to-send-a-custom-server-http-header.aspx
如果你想知道为什么要这样做,这并不是唯一的方法,你可以去你的 Web 服务器并从初始头部中将其删除。
如果你想知道为什么要使用 IHttpModule + PreSendRequestHeader,因为这是抓取头部的初始部分并在 iis 之前放置“server”头的方法。
希望这有所帮助。
<remove name="whatever" />
)添加/删除的头部却不需要。 - David Murdoch<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<rewrite>
<outboundRules rewriteBeforeCache="true">
<rule name="Remove Server header">
<match serverVariable="RESPONSE_Server" pattern=".+" />
<action type="Rewrite" value="" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>
Response.Headers.Set("Server", "My Awesome Server");
在页面代码后端中运行良好,只要您的应用程序池设置为“集成管道模式”。
基本上,IPM是专门为了让IIS管道与ASP.NET管道集成以允许执行此类操作而设计的。请参见Mehrdad Afshari's Answer进行讨论。