IIS 6 Isapi筛选器-将请求转发或重定向到其他域
IIS 6 Isapi filter - forward or redirect requets to other domain
下面的代码是我的IIS 6 Isapi过滤器的主要部分。我需要将所有包含"/some_string"的请求重定向到位于其他域和其他服务器上的其他url。怎么做?
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];wsprintf(rsp,"位置:%s\r\n\r\n",newUrlString);pfc->ServerSupportFunction(pfc,SF_REQ_SEND_RESPONSE_HEADER,(PVOID)"302重定向",(DWORD)rsp,0);//。。。
而不是
pHeaderInfo->SetHeader(pCtxt->m_pFC,"url",newUrlString);
我认为这是你唯一要做的事情。
相关文章:
- 如何将stdout重定向到stderr
- 编写时C++中的输入重定向问题
- 获取通过重定向传入的输入文件的名称?
- Windows C++重定向库
- 写入文件 a.txt,而终端重定向到文件 b.txt
- 使用 dup2() 进行输入重定向
- 将 clangd stderr 重定向到文件而不是控制台
- 如何在C++中获取重定向网页的URL
- 将标准输出重定向到ostream
- 如何撤消此代码上的 cin 重定向?
- 使用重定向标准处理子进程中的 kbhit
- 是否可以将子进程的 stdout 重定向到父进程中的另一个文件?
- 重定向输入和输出时如何处理主文件I/O?
- 如何将HTTPS流量重定向到本地主机:443上的代理?
- 使用重定向命令从 stdin 读入的字符串"<"输入文件未正确附加
- 尝试在 Windows 上重定向 stdout 和 stderr——_fileno(stdout) 返回 -2
- 可以将Boost消息队列文件重定向到用户指定的位置
- 在程序执行期间从标准输出重定向到自定义流
- 如何使用PHP将上传到本地主机的一个html文件重定向到磁盘上的另一个html文档
- IIS 6 Isapi筛选器-将请求转发或重定向到其他域