Apache で 1 つの HTTP ヘッダーの複数の出現を記録する

Apache で 1 つの HTTP ヘッダーの複数の出現を記録する

ログディレクティブを使用すると、クライアントに返されたヘッダーをaccess.logファイルに記録できます%{Set-Cookie}o。ただし、複数回発生同じヘッダーのHTTP RPCによって承認された1つだけが記録される

どうすれば全員ログインしましたか?

参考までに、RFC には次のように記載されています。

同じフィールド名を持つ複数のメッセージ ヘッダー フィールドがメッセージ内に存在する可能性があるのは、そのヘッダー フィールドのフィールド値全体がコンマ区切りのリスト [つまり、#(値)] として定義されている場合のみです。

Set-Cookieフィールド値がコンマで区切られているため、このようなフィールド名になります。HTTP RPC で提案されているように、フィールドを結合してもかまいません。

答え1

Apache のバージョンは何ですか? mod_log のバージョンは何ですか? 正しい答えは、Apache にバグレポートを提出するか、自分でパッチを適用することかもしれません。

答え2

実際、バージョン 2.0 以降では、次の例外を除いてすぐに使用できますContent-type。すべてのヘッダーは、HTTP RFC で提案されているように、コンマで適切に連結されます。

log_header_out「Set-Cookie」応答ヘッダーにも、次の関数でわかるように特別な処理があります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 ...

関連情報