【发布时间】:2010-09-09 15:49:45
【问题描述】:
【问题讨论】:
标签: asp.net iis-7 response-headers
【问题讨论】:
标签: asp.net iis-7 response-headers
Aristos link 中的 cmets 很好地回答了为什么。
归结为 MS 不想轻易让人们修改这个值。无论是出于营销目的还是其他目的,都可以解释。
从该讨论中带走的一点是,修改服务器标头对于任何类型的安全性都没有用。您可以通过多种方式准确检测正在运行的 Web 服务器软件的种类(和版本)。
这让我们只有一个理由这样做:节省字节。除非您正在运行一个非常高流量的网站,否则这不是问题。如果您正在运行一个高流量网站,那么您很可能已经在运行一个或多个自定义模块。
【讨论】:
以下内容对我有用:
在 IIS 10.0 (Windows Server 2016/2019) 中,您可以通过在 web.config system.webServer 节点中配置 requestFiltering 来移除 Server 标头:
<security>
<requestFiltering removeServerHeader ="true" />
</security>
这样您就不必摆弄复杂的出站重写规则。
要删除 ASP.NET 的 X-Powered-By 标头,您仍然需要上面提到的 customHeaders 部分。
来源:https://www.saotn.org/remove-iis-server-version-http-response-header/
【讨论】:
这个例子并不是真的去掉“server”头,只是在上面写点别的。
更好的标题是“IIS7 如何发送自定义“服务器”http 标头”。阅读这篇类似的文章http://blogs.technet.com/b/stefan_gossner/archive/2008/03/12/iis-7-how-to-send-a-custom-server-http-header.aspx
现在,如果您想知道为什么会这样,这不是唯一的一种方式,您可以访问您的网络服务器,然后将其从首字母标题中删除。
如果您想知道,为什么要使用 IHttpModule + PreSendRequestHeader,因为这是您获取初始部分的标头并在 iis 执行此操作之前首先放置“服务器”标头的方式。
希望对您有所帮助。
【讨论】:
<remove name="whatever" />) 添加/删除的其他标头。
I just want to know why it is necessary to remove [the 'Server' header] this way.”谢谢你的回答!
您也可以通过在 IIS 7+ 的 web.config 文件中添加 outboundRule 来清空该值:
<?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 进行讨论。
【讨论】: