Установка пользовательских значений заголовка в фильтре IIS ISAPI - PullRequest
2 голосов
/ 18 марта 2010

У меня есть фильтр ISAPI, который я использую для перезаписи URL для моей CMS. Я обрабатываю уведомления SF_NOTIFY_PREPROC_HEADERS и пытаюсь сделать это:

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 ]

2 голосов
/ 18 марта 2010

Я наконец-то понял это, мне не хватало ':' в заголовке:

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 голос
/ 18 марта 2010

Кажется, чтобы быть правильным. Но оба метода возвращают BOOL. Проверьте их и позвоните GetLastError(), если они вернутся FALSE.
EDIT:
Я не совсем уверен, но вы также можете попробовать вернуть SF_STATUS_REQ_FINISHED вместо SF_STATUS_REQ_NEXT_NOTIFICATION.

...