2

我有一个 ISAPI 过滤器,用于为我的 CMS 进行 URL 重写。我正在处理 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”标题值出现,但它们没有出现。我在这里做错了吗?

4

2 回答 2

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”的服务器变量。

于 2010-03-18T18:38:26.143 回答
1

似乎是正确的。但是这两种方法都返回一个BOOL. 检查他们并GetLastError()在他们返回时打电话FALSE
编辑:
我不太确定,但您也可以尝试返回SF_STATUS_REQ_FINISHED而不是SF_STATUS_REQ_NEXT_NOTIFICATION.

于 2010-03-18T17:19:32.823 回答