IIS 6 Isapi filter — пересылать или перенаправлять запросы в другой домен

Код ниже является основной частью моего фильтра Isapi для IIS 6.
Мне нужно перенаправить весь запрос, который содержит «/ 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;
}

Спасибо!

1

Решение

Вам нужно ответить кодом состояния 302, сообщив браузеру, какой новый URL вы хотите перенаправить.

Просто маленький, не производственный шаблон для достижения этой цели:

// …
char rsp [50];
wsprintf (rsp, «Местоположение:% s \ r \ n \ r \ n», newUrlString);
pfc-> ServerSupportFunction (pfc, SF_REQ_SEND_RESPONSE_HEADER, (PVOID) «302 Redirect», (DWORD) rsp, 0);
// …

вместо

pHeaderInfo-> SetHeader (pCtxt-> m_pFC, «url», newUrlString);

Я думаю, что это единственное, что вам нужно сделать.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]