
和模組日誌您可以使用指令在 access.log 檔案中記錄傳送回客戶端的標頭%{Set-Cookie}o
。但如果有多次出現相同的標頭,原樣由 HTTP RPC 授權,只有一個被記錄。
我們怎樣才能有他們全部已登入?
作為參考,RFC 指出:
當且僅當該頭字段的整個字段值被定義為逗號分隔清單[即#(values)]時,具有相同字段名稱的多個消息頭字段可以出現在訊息中。
Set-Cookie
是這樣的欄位名稱,因為欄位值是用逗號分隔的。我不介意按照 HTTP RPC 中的建議將它們連接在一起。
答案1
什麼版本的阿帕契? 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 ...