我正在尝试删除显示我的 IIS 版本的“服务器”标头。我正在使用带有 ASP.NET Core 3.0 的 IIS Express 10 并开发了一个 Web API。我尝试了以下选项,但响应中仍存在标头并显示版本:IIS 10.0。
将 HTTP 参数中的注册表项“DisableServerHeader”更改为
1
。它仅删除了 http.sys 模块的服务器标头,而不是 IIS 版本。使用下面的代码应用程序主机配置
<system.webServer>
标签中的文件<rewrite> <outboundRules rewriteBeforeCache="true"> <rule name="Remove Server header"> <match serverVariable="RESPONSE_Server" pattern=".+" /> <action type="Rewrite" value="" /> </rule> </outboundRules> </rewrite>
答案1
我在这个网站上测试了这个技巧,它很有效IIS 10。
简单的web.config
:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<security>
<requestFiltering removeServerHeader="true" />
</security>
</system.webServer>
</configuration>
答案2
已经有很多很好的答案,但我想为像我这样的用户展示一种不同的方法,他们喜欢使用带有附带的“配置编辑器”的 Windows GUI IIS 管理控制台“Internet 信息服务(IIS)管理器”。
您还可以避免由于配置文件格式错误而导致 IIS 崩溃,就像其中一位评论者所遇到的情况一样。“配置编辑器”将为您应用 IIS 配置文件中的更改。此外,您可以根据需要全局或按站点设置这些设置,而无需手动编辑文件或应用 Powershell/cmd 命令。
打开“Internet 信息服务 (IIS) 管理器”。
如果要全局设置,请点击您的主服务器节点:
打开“配置编辑器”
要删除
x-aspnet-version
响应标头,请转到system.web >> httpRuntime >> enableVersionHeader并将其设置为false
要删除 IIS
server
响应标头,请转到system.webServer>>安全>>requestFiltering>>removeServerHeader并将其设置为true
要设置每个站点的值,只需单击要应用更改的站点,然后从那里选择配置编辑器。
答案3
以管理员身份运行:
%systemroot%\system32\inetsrv\appcmd.exe set config -section:system.webServer/security/requestFiltering /removeServerHeader:"True" /commit:apphost
答案4
以上所有解决方案均有效...但是这是在 IIS 中删除响应标头时需要注意的要点。
适用于 ASP.net 应用程序: 方法 1 -
方法 - 2:在 webConfiguration Editor 中尝试修改键的值---system.webServer/rewrite/outboundRules rewriteBeforeCache
并将其设置为 true,否则 Cache 可能会覆盖URLRequire
或Global.asax
设置。
方法 3 -:(在 Global.asax 文件中)
protected void Application_PreSendRequestHeaders()
{
// Remove the default Server header
Response.Headers.Remove("Server");
// Optionally, add your own Server header
Response.AddHeader("Server", "My-App/1.0");
}
方法 4:URL 重写上面已经描述过了。