【发布时间】:2018-04-04 00:14:54
【问题描述】:
我在 https url 上有一个 asp.net mvc 项目。
我已从 IIS 中删除 X-Power-By 标头。
我的 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;
现在服务器标头已从我的页面中删除...
但是……
对于一些 css 和 jquery 以及图片文件,会显示 Server 标头和 X-Power-By 标头。
真的应该怎么做才能从我的所有请求(包括页面、样式、脚本和图像文件)中删除 Server 和 X-Power-By 标头?
【问题讨论】:
-
您是否尝试过在 IIS 中实现 URL 重写规则?
-
这看起来很像这个问题stackoverflow.com/questions/46733045/…
-
@alaa_sayegh 是的,但是 js 文件的标题仍然存在。
-
@HamidReza 查看我发布的答案
标签: c# asp.net asp.net-mvc asp.net-mvc-4 iis