直播中
OnPreprocHeaders -- 服務(wù)器預(yù)處理客戶端頭文件.
OnAuthentication -- 客戶端驗(yàn)證.
OnUrlMap -- 服務(wù)器映射邏輯URL到物理路徑.
OnSendRawData -- 服務(wù)器發(fā)送未經(jīng)處理的數(shù)據(jù)到客戶端(之前).
OnReadRawData -- 客戶斷發(fā)送未經(jīng)處理的數(shù)據(jù)到服務(wù)器(之后,但在服務(wù)器處理之前).
OnLog -- 寫日志到服務(wù)器文件.
OnEndOfNetSession -- 會(huì)話結(jié)束.
下面是OnUrlMap的用法:
DWORD CJsisapiFilter::OnUrlMap(CHttpFilterContext* pCtxt,
PHTTP_FILTER_URL_MAP pMapInfo)
{
// TODO: React to this notification accordingly and
// return the appropriate status code
DWORD lenURL = strlen(pMapInfo->pszURL);
DWORD dwReferer = 250;
const char * szURL = strlwr((char *)pMapInfo->pszURL);
const char * szExtension = &szURL[lenURL - 3];
const char * inExtension = &szURL[lenURL - 4];
char szReferer[250];
//到服務(wù)器的數(shù)據(jù)已經(jīng)編碼過了
if ( strcmp(szExtension, ".js") == 0 || strcmp(inExtension,".inc") == 0 || strcmp(inExtension,".asa") == 0){
pCtxt->GetServerVariable("HTTP_REFERER", szReferer, &dwReferer);
if ( szReferer[0] != 'h' ) {
char szRedirect[2];
char szContent[300];
DWORD dwRedirect = 2;
DWORD dwContent;
sprintf(szRedirect,"");
sprintf(szContent, "\r\n\r\n<html>\r\n<head><title>安全文件</title></head>\r\n<body>\r\n<b><center><font size=+2>該文件包含非公開信息,您沒有讀取該文件的權(quán)限。</font></b><br><br><br><hr><a href=mailto:bingb@emount.com.cn>mailto:bingb@emount.com.cn</a><br></center>\r\n</body>\r\n</html>\r\n");
dwContent = strlen(szContent);
pCtxt->ServerSupportFunction(SF_REQ_SEND_RESPONSE_HEADER,szRedirect,&dwRedirect,NULL);
pCtxt->WriteClient (szContent, &dwContent);
return SF_STATUS_REQ_FINISHED;
}
}
return SF_STATUS_REQ_NEXT_NOTIFICATION;
}
編譯后將編譯完成的DLL文件拷貝到winnt\system32\inetsrv\目錄下,然后在站點(diǎn)的屬性里面的ISAPI過濾器添加一個(gè)過濾器,映射DLL到該文件即可。
重新啟動(dòng)W3SVC服務(wù),然后訪問:http://localhost/xxx.inc可以看到返回信息。
有任何問題可以聯(lián)系:bingb@emout.com.cn
希望該文章能對(duì)您有用。