我在 https url 上有一个 asp.net mvc 项目。
我已经从 IIS 中删除了 X-Power-By header 。
我的 web.config 中有这些行:
<customHeaders>
<remove name="X-AspNet-Version" />
<remove name="X-AspNetMvc-Version" />
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
我写了下面的类:
public class RemoveServerHeaderModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.PreSendRequestHeaders += OnPreSendRequestHeaders;
}
public void Dispose() { }
void OnPreSendRequestHeaders(object sender, EventArgs e)
{
HttpContext.Current.Response.Headers.Remove("X-Powered-By");
HttpContext.Current.Response.Headers.Remove("X-AspNet-Version");
HttpContext.Current.Response.Headers.Remove("X-AspNetMvc-Version");
HttpContext.Current.Response.Headers.Remove("Server");
}
}
并且我在上面的类的 web.config 中添加了这一行:
<modules>
<add name="RemoveServerHeaderModule" type="IZBSC.UI.Components.RemoveServerHeaderModule" />
</modules>
即使我已将以下行添加到我的 Global.asax 文件中:
protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
{
HttpContext.Current.Response.Headers.Remove("X-Powered-By");
HttpContext.Current.Response.Headers.Remove("X-AspNet-Version");
HttpContext.Current.Response.Headers.Remove("X-AspNetMvc-Version");
HttpContext.Current.Response.Headers.Remove("Server");
}
并且我在 Global.asax 中的 Application_Start() 方法中添加了以下代码行:
MvcHandler.DisableMvcResponseHeader = true;
现在服务器 header 已从我的页面中删除...
但是……
某些 css 和 jquery 以及图片文件会显示服务器 header 和 X-Power-By header 。
我真的应该怎么做才能从我的所有请求(包括页面、样式、脚本和图像文件)中删除 Server 和 X-Power-By header ?
最佳答案
如果您希望从整个 IIS 服务器 中删除服务器响应 header (这在安全方面更好),您可以从注册表中进行配置:
https://blogs.msdn.microsoft.com/varunm/2013/04/23/remove-unwanted-http-response-headers/
删除此 header :
- 服务器 - 指定网络服务器版本。
- X-Powered-By - 表示该网站“由 ASP.NET 提供支持”。
- X-AspNet-Version - 指定所使用的 ASP.NET 版本。
关于c# - 在 asp.net mvc 中没有删除 header 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46889507/