我给出一个办法,编写ISAPI FILTER,在IIS向浏览器发送反馈之前,替换掉.NET的输出内容。该演示使用VC6.0+IIS5.0+WINXP SP2
假设我们想把yahoo.com替换为im286.com,其原文件为:
CODE:
1、新建工程,选择ISAPI Extension Wizard,项目名称假设就叫:bababian

2、在向导中第一步,选择Generate a Filter object

3、在向导中第一步,选择Outgoing raw data and headers

4、创建了工程后,我们选择OnSendRawData进行处理,代码如下:
CODE:
5、编译后,在IIS里加载该FILTER,然后重新启动IIS。

6、在浏览器里察看效果。

假设我们想把yahoo.com替换为im286.com,其原文件为:
<html>
<body>
<A HREF="http://www.yahoo.com">http://www.yahoo.com</A>
</body>
</html>
<body>
<A HREF="http://www.yahoo.com">http://www.yahoo.com</A>
</body>
</html>
1、新建工程,选择ISAPI Extension Wizard,项目名称假设就叫:bababian
2、在向导中第一步,选择Generate a Filter object
3、在向导中第一步,选择Outgoing raw data and headers
4、创建了工程后,我们选择OnSendRawData进行处理,代码如下:
DWORD CBababianFilter::OnSendRawData(CHttpFilterContext* pCtxt,
PHTTP_FILTER_RAW_DATA pRawData)
{
char* pchIn = (char*)pRawData->pvInData;
for(DWORD cbBuffer=0; cbBuffer<pRawData->cbInData;cbBuffer++){
if((pchIn[cbBuffer]=='y')&&
(pchIn[cbBuffer+1]=='a')&&
(pchIn[cbBuffer+2]=='h')&&
(pchIn[cbBuffer+3]=='o')&&
(pchIn[cbBuffer+4]=='o')){
pchIn[cbBuffer]='i';
pchIn[cbBuffer+1]='m';
pchIn[cbBuffer+2]='2';
pchIn[cbBuffer+3]='8';
pchIn[cbBuffer+4]='6';
}
}
return SF_STATUS_REQ_NEXT_NOTIFICATION;
}
PHTTP_FILTER_RAW_DATA pRawData)
{
char* pchIn = (char*)pRawData->pvInData;
for(DWORD cbBuffer=0; cbBuffer<pRawData->cbInData;cbBuffer++){
if((pchIn[cbBuffer]=='y')&&
(pchIn[cbBuffer+1]=='a')&&
(pchIn[cbBuffer+2]=='h')&&
(pchIn[cbBuffer+3]=='o')&&
(pchIn[cbBuffer+4]=='o')){
pchIn[cbBuffer]='i';
pchIn[cbBuffer+1]='m';
pchIn[cbBuffer+2]='2';
pchIn[cbBuffer+3]='8';
pchIn[cbBuffer+4]='6';
}
}
return SF_STATUS_REQ_NEXT_NOTIFICATION;
}
5、编译后,在IIS里加载该FILTER,然后重新启动IIS。
6、在浏览器里察看效果。
