隐藏

http请求response拦截(IIS)

发布:2020/10/14 17:44:59作者:管理员 来源:本站 浏览次数:1357

基于微软系IIS开发的网站response拦截器的研究与实现

目的:针对微软系IIS开发的网站的response的拦截器的研究,插入一段js代码
工具:使用IIS response filter
语言:VB / C#
测试环境:本次测试主要在win7上进行,使用微软自带的IIS,版本为7.5

IIS处理http请求的原理:

在介绍原理之前,我们先认识俩个名词:工作进程、应用程序池。
工作进程:在IIS中,工作进程(w3wp.exe)运行ASP.NET程序管理所有请求。ASP.NET都运行在工作进程中,当请求到来时,工作进程会生成Request和 Response相关信息。
应用程序池:应用程序池是工作进程的容器,一个程序出错或资源回收,应用程序池之间独立互不影响。
HTTP.SYS负责把请求传入相应的应用程序池中 -> 应用程序池接收到请求 -> 开启工作进程(w3wp.exe)。该进程检查所有的URL加载哪个扩展asp.net ,加载时会附带自己的ISAPI扩展(aspnet_isapi.dll),以便在IIS中映射
一旦加载aspnet_isapi.dll就会构造HttpRunTime类(应用程序入口) 通过HttpRunTime.ProcessRequest()方法处理请求。
一旦调用此方法,一个HttpContext的实例产生,通过HttpContext.Current._ 获取实例 ,可以获取一些常用的对象,比如:Request、Response、Session等。
之后HttpRunTime会通过HttpApplicationFactory类加载一个HttpApplication对象
每一次请求都要穿过一堆堆的HttpModule到达HttpHandler —— 通过自定义HttpModule来再请求和响应之间做处理。可见附图:
http请求原理

win7的IIS发布网站系统 部署项目:

1、确保系统上已经安装IIS,如果没有安装,通过【控制面板】→【程序】→【程序和功能】→【打开或关闭Windows功能】选中Internet信息服务下面的所有选项,确定
这里写图片描述
对应用程序开发功能进行如下配置:
控制面板->打开或关闭windows功能->Internet信息服务->万维网服务->应用程序开发功能,勾选上“.net扩展性”、“ASP.NET”、“ISAPI扩展”、”ISAPI筛选器”,保存后,重启IIS服务器即可。
这里写图片描述
2、打开IIS,在网站上右击,选择【添加网站】