我创建了两个asp.net + MVC应用程序,并将一个部署到Azure App Service Web应用程序,并将其他部署到ASE(应用程序服务环境)中创建的应用程序服务Web应用程序中。
在URL中提供特殊字符时,响应头包含" Microsoft-HTTPAPI / 2.0"。我在应用程序中完成了以下更改,但问题仍然存在。
<security>
<requestFiltering removeServerHeader="true"/>
</security>
protected void Application_PreSendRequestHeaders(Object source, EventArgs e)
{
HttpContext.Current.Response.Headers.Remove("Server");
}
答案 0 :(得分:1)
删除默认标头。您可以创建一个http模块来执行此操作。以下代码供您参考。
public class RemoveDefaultHeaderModule : IHttpModule
{
public void Dispose()
{
}
public void Init(HttpApplication context)
{
context.PreSendRequestHeaders += Context_PreSendRequestHeaders;
}
private void Context_PreSendRequestHeaders(object sender, EventArgs e)
{
//Remove the header you wanted
(sender as HttpApplication).Response.Headers.Remove("Server");
(sender as HttpApplication).Response.Headers.Remove("X-AspNet-Version");
}
}
您还需要在web.config中注册此模块。不要忘记将runAllManagedModulesForAllRequests属性设置为true,这将使该模块适用于静态资源。
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="RemoveDefaultHeaderModule" type="TestServerHeader.RemoveDefaultHeaderModule" />
</modules>
</system.webServer>
答案 1 :(得分:0)
我正在使用Windows Server 2016和IIS 10.0,我通过运行powershell(作为管理员)来完成它并执行以下操作:
PS > cd IIS:\
PS > Set-WebConfigurationProperty -filter "system.webServer/security/requestFiltering" -name "removeServerHeader" -value "True"
在web.config中加入这个:
<security>
<requestFiltering removeServerHeader="true" />
</security>
作为参考,我将此blog post红色。
但是,当我因任何原因编辑web.config时,我必须重新运行脚本才能再次删除服务器头...或者在更新web.config后它似乎在那里很短的时间。
希望这有帮助!