使用 Apache 记录一个 HTTP 标头的多次出现

使用 Apache 记录一个 HTTP 标头的多次出现

mod_log您可以使用指令在 access.log 文件中记录发送回客户端的标头%{Set-Cookie}o。但如果有多次出现相同的标题,原样通过 HTTP RPC 授权只有一个被记录

我们怎样才能他们全部已登錄?

作为参考,RFC 指出:

当且仅当该头字段的整个字段值定义为逗号分隔的列表 [即,#(values)] 时,消息中才可以存在具有相同字段名称的多个消息头字段。

Set-Cookie是这样的字段名称,因为字段值是用逗号分隔的。我不介意将它们连接在一起,就像 HTTP RPC 中所建议的那样。

答案1

apache 是什么版本?mod_log 是什么版本?正确的答案可能是向 apache 提交错误报告或自行修补。

答案2

实际上,从 2.0 版开始,它就可以开箱即用,除了Content-type:每个标头都按照 HTTP RFC 中的建议与逗号很好地连接起来。

“Set-Cookie”响应头也有特殊处理,我们可以在log_header_out函数中看到modules/loggers/mod_log_config.c

// ... start of snippet ...
if (!strcasecmp(a, "Content-type") && r->content_type) {
    cp = ap_field_noparam(r->pool, r->content_type);
}
else if (!strcasecmp(a, "Set-Cookie")) {
    cp = find_multiple_headers(r->pool, r->headers_out, a);
}
else {
    cp = apr_table_get(r->headers_out, a);
}
// ... end of snippet ...

相关内容