代码之家  ›  专栏  ›  技术社区  ›  David Murdoch

为什么不能通过删除“服务器”响应头web.config文件在IIS7里?

  •  16
  • David Murdoch  · 技术社区  · 14 年前

    Remove Server Response Header IIS7

    怎样 Server

    我只想知道

    5 回复  |  直到 7 年前
        1
  •  7
  •   ChrisLively    14 年前

    中的注释 Aristos link 对原因给出了一个很好的答案。

    归根结底,微软不想轻易地让人们修改这个值。无论是出于营销还是其他目的,都可以解释。

    这样做的原因只有一个:保存字节。除非你运行的是一个流量极高的网站,这不是一个问题。如果你正在运行一个高流量的网站,那么你很可能已经运行一个或多个自定义模块。

        2
  •  5
  •   C. Molendijk    5 年前

    以下几点对我很有用:

    在IIS 10.0(Windows Server 2016/2019)中,可以通过在web.config文件系统.webServer节点:

    <security>
      <requestFiltering removeServerHeader ="true" />
    </security>
    

    这样,您就不必摆弄复杂的出站重写规则。

    删除ASP.NETX-Powered-By-header您仍然需要上面提到的customHeaders部分。

    资料来源: https://www.saotn.org/remove-iis-server-version-http-response-header/

        3
  •  2
  •   Aristos    14 年前

    更好的标题是“ IIS7如何发送自定义“服务器”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”头的方式。

    希望这有帮助。

        4
  •  1
  •   needfulthing    7 年前

    也可以通过在web.config文件IIS 7+中的文件:

    <?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>
    
        5
  •  0
  •   user229044    9 年前

    1. 出于安全考虑。攻击者很难判断 关于软件(版本)和web服务器是否支持该网站。
    2. 它减少了服务器端到浏览器产生的数据量。

    Read more about Inspecting Http Response Headers

        6
  •  -1
  •   Community Lee Campbell    7 年前

    Response.Headers.Set("Server", "My Awesome Server");

    基本上,IPM专门用于让IIS管道与ASP.NET管道允许这种事情发生。看到了吗 Mehrdad Afshari's Answer