(搬出自小码哥base64)经验贴-基于Vc++开发IIS7以及IIS6的万能筛选器

前段时间,公司打算自行开发能够跨j2ee以及.net的单点登录平台,需要一个无侵入式的工具,来拦截所有经过iis的http请求(.net框架的拦截器不可行,因为它无法拦截asp的请求)。最终找到了可以完美实现需求的方案,就是通过iis+isqpi组件的方式,只是这方面的技术资料较少,所以很是费了一番周折才最终完成,在这里给大家做个分享:

一、iis6篇

       1)环境:visual studio6,是的,就是这个古老的开发工具,只有这个工具才自带了isapi的模板,因为iis6也足够古老了,它们都是“微软6系”。

       2)新建工程:准备好vs6以后,新建新工程,选择"ISAPI Filter Wizard" 工程类型,一路下一步之后,工程目录就出来了(暂时将我们初始化的filter类命令为CTestFilter)。

       3)打开vs初始化的工程,打开CTestFilter.cpp文件,我们可以看到有一个自动生成的函数:

BOOL CTestFilter::GetFilterVersion(PHTTP_FILTER_VERSION pVer)
{
         // Call default implementation for initialization
         CTestFilter::GetFilterVersion(pVer);
 
         // Clear the flags set by base class
         pVer->dwFlags &= ~SF_NOTIFY_ORDER_MASK;
 
         // Set the flags we are interested in
         pVer->dwFlags |= SF_NOTIFY_ORDER_HIGH| SF_NOTIFY_PREPROC_HEADERS | SF_NOTIFY_SEND_RAW_DATA;
 
         // Load description string
         TCHAR sz[SF_MAX_FILTER_DESC_LEN+1];
         ISAPIVERIFY(::LoadString(AfxGetResourceHandle(),
                            IDS_FILTER, sz, SF_MAX_FILTER_DESC_LEN));
         _tcscpy(pVer->lpszFilterDesc, sz);
         return TRUE;
}

       不要关注其他代码,只需要关注红色字体部分,这几个系统常量是用来指定筛选器需要拦截哪些http内容的,我简单拦截类型有好几种,详细信息可以查询msdn的文档,我只简单介绍下其中的SF_NOTIFY_PREP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值