2010-03-18 53 views
2

我有一個ISAPI篩選器用於爲我的CMS執行URL重寫。我處理SF_NOTIFY_PREPROC_HEADERS通知,並試圖做到這一點:在IIS ISAPI篩選器中設置自定義標題值

DWORD ProcessHeader(HTTP_FILTER_CONTEXT *con, HTTP_FILTER_PREPROC_HEADERS *head) 
{ 
    head->SetHeader(con, "test1", "aaa"); 
    con->AddResponseHeaders(con, "test2:bbb\r\n", 0); 
    return SF_STATUS_REQ_NEXT_NOTIFICATION; 
} 

不過,我似乎無法讀取使用服務器變量或響應報頭在傳統的ASP或PHP這些值。值缺失。我期待着我的「test1」或「test2」標題值出現,但它們不是。我在這裏做錯了什麼?

回答

2

我終於找到它了,我錯過了一個「:」在頭名:

DWORD ProcessHeader(HTTP_FILTER_CONTEXT *con, HTTP_FILTER_PREPROC_HEADERS *head) 
{ 
    head->SetHeader(con, "test1:", "aaa"); 
    return SF_STATUS_REQ_NEXT_NOTIFICATION; 
} 

現在,這將創建一個名爲「HTTP_TEST1」服務器變量。

1

似乎是正確的。但是這兩種方法都返回BOOL。如果他們返回FALSE,請檢查它們並致電GetLastError()
編輯:
我不太確定,但你也可以嘗試返回SF_STATUS_REQ_FINISHED而不是SF_STATUS_REQ_NEXT_NOTIFICATION

+0

我不敢相信我忘了那個。 :(SetHeader調用返回錯誤87.我會深入挖掘。 – 2010-03-18 18:17:05