基于微软系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、Resp