C++ IIS 6 Isapi筛选器-将请求转发或重定向到其他域
下面的代码是iis6的Isapi过滤器的主要部分。 我需要将所有包含/some_字符串的请求重定向到其他url,该url位于其他域和其他服务器上。 怎么做C++ IIS 6 Isapi筛选器-将请求转发或重定向到其他域,c++,iis-6,isapi,isapi-rewrite,isapi-redirect,C++,Iis 6,Isapi,Isapi Rewrite,Isapi Redirect,下面的代码是iis6的Isapi过滤器的主要部分。 我需要将所有包含/some_字符串的请求重定向到其他url,该url位于其他域和其他服务器上。 怎么做 DWORD CAmgnIsapiFilter::OnPreprocHeaders(CHttpFilterContext* pCtxt, PHTTP_FILTER_PREPROC_HEADERS pHeaderInfo) { char buffer[256]; DWORD buffSize = sizeof(buffer
DWORD CAmgnIsapiFilter::OnPreprocHeaders(CHttpFilterContext* pCtxt,
PHTTP_FILTER_PREPROC_HEADERS pHeaderInfo)
{
char buffer[256];
DWORD buffSize = sizeof(buffer);
BOOL bHeader = pHeaderInfo->GetHeader(pCtxt->m_pFC, "url", buffer, &buffSize);
CString urlString(buffer);
urlString.MakeLower();
if (urlString.Find("/some_string") != -1) //we want to redirect this file
{
urlString.Replace("/some_string","");
urlString = "http://new_domain.cz/something" + urlString;
char * newUrlString= urlString.GetBuffer(urlString.GetLength());
pHeaderInfo->SetHeader(pCtxt->m_pFC, "url", newUrlString);
return SF_STATUS_REQ_HANDLED_NOTIFICATION;
}
//we want to leave this alone and let IIS handle it
return SF_STATUS_REQ_NEXT_NOTIFICATION;
}
谢谢 您需要用302状态码响应,告诉浏览器您要重定向到的新URL 只需一个小的、非生产级的模板即可实现这一点: //。。。 char-rsp[50]; wsprintfrsp,位置:%s\r\n\r\n,newUrlString; pfc->ServerSupportFunction pfc,SF_请求_发送_响应_头,PVOID 302重定向,DWORD rsp,0; // 而不是 pHeaderInfo->SetHeaderpCtxt->m_pFC,url,newUrlString 我想这是你唯一要做的事