我有一个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”标题值出现,但它们不是。我在这里做错了吗?
答案 0 :(得分: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 :(得分:1)
似乎是正确的。但是这两种方法都返回BOOL
。检查一下,如果他们返回GetLastError()
,请致电FALSE
。
编辑:
我不太确定,但您也可以尝试返回SF_STATUS_REQ_FINISHED
而不是SF_STATUS_REQ_NEXT_NOTIFICATION
。