设置如下:

带有 IIS 10 的 Windows Server 2022 标准版。

基于 ASP .NET 4.8 的应用程序,使用Integrated mode和运行Application Pool Identity

我正在尝试删除以下标题:

Server,,,,X-Powered-ByX-ASPNet-VersionX-ASPNetMVC-Version

无论做什么,标题都会保留。

尝试过的事情:

  1. RESPONSE HEADERS从标题中删除服务器级别X-Powered-By– 无效果,仍然显示在动态内容上。

  2. 在服务器 applicationhost.config 配置文件和应用程序配置文件中设置 enableVersionHeader 无效:

<configuration>
  <system.web>
    <httpRuntime enableVersionHeader="false" />
  </system.web>
</configuration>
  1. 在服务器级别设置无效:
<configuration>
  <system.webServer>
    <security>
      <requestFiltering removeServerHeader="true" />
    </security>
  </system.webServer>
</configuration>
  1. 将 DisableServerHeader DWORD 注册表值设置为 1,并重新启动 IIS,但无效: HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters!DisableServerHeader

  2. 尝试修改Global.asax以删除 ASPNetMVC 标头,但它破坏了应用程序。

我确认,服务器级别的更改已延伸至网站级别。我也尝试在网站的 web.config 中手动设置。效果相同(无)。

URL 扫描不再可用,因此它不是一个选项。最后一个选项似乎是使用 URL 重写,但如果可能的话,我宁愿不使用它,因为据说有原生解决方案。

我做错了什么?我遗漏了什么吗?

1

  • 您必须启用失败请求跟踪才能深入了解运行时信息。这些步骤自 Windows Server 2016 以来已被证明有效,因此它不会突然停止在您的服务器上工作。


    – 



最佳答案
1

我认为您可以编辑应与您的应用程序一起分发的 web.config 并添加以下行:

    <system.webServer>
...
        <httpProtocol>
            <customHeaders>
                <remove name="X-Powered-By" />
                <remove name="Server" />                
            </customHeaders>
        </httpProtocol>

1

  • 这就是步骤 1 删除 的操作X-Powered-By。但Server无法通过这种方式删除标题。


    –