簡體   English   中英

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);

我認為這是您唯一要做的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM