Net中我们为了安全或其他原因起见 可能需要修改我们的标头报文等
以下方法我们通过使用HTTP Module来使用编程的方式来去除或修改它
首先我们自定义一个类CustomServerHeaderModule继承自IHttpModule 并为PreSendRequestHeaders事件创建事件处理程序
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace Cloud.ApiWeb.Models
{
public class CustomServerHeaderModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.PreSendRequestHeaders += OnPreSendRequestHeaders;
}
public void Dispose()
{
}
void OnPreSendRequestHeaders(object sender, EventArgs e)
{
//移除Server标头
//HttpContext.Current.Response.Headers.Remove("Server");
//重新设置Server标头
HttpContext.Current.Response.Headers.Set("Server", "Windows Server 2012");
}
}
}
接下来在web.config文件中配置
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="FirstModule" type="Cloud.ApiWeb.Models.CustomServerHeaderModule,Cloud.ApiWeb" />
</modules>
</system.webServer>
Type有两部分组成第一部是命名空间及类名,也就是类型名;后面是程序集名。
如果该类建在App_Code下 则不需要指定程序集 如下
<add name="FirstModule" type="CustomServerHeaderModule" />
注:由于是托管模块 你需要将你的项目部署在IIS中 方有效果 VS中无效
下来我们可以预览下:
通过IE调试工具捕获,我们可以很清楚的看到响应标头的变化
未修改的:
修改后的:
好 到此为止吧 希望本文能帮到你~~