Mehrfaches Vorkommen eines HTTP-Headers mit Apache protokollieren

Mehrfaches Vorkommen eines HTTP-Headers mit Apache protokollieren

Mitmod_logSie können mit der Direktive Header, die an den Client zurückgesendet werden, in der Datei access.log protokollieren %{Set-Cookie}o. Wenn es jedochMehrfachvorkommendes gleichen Headers, wieautorisiert durch HTTP RPC,nur einer wird angemeldet.

Wie können wiralle von ihneneingeloggt?

Als Referenz heißt es im RFC:

Mehrere Nachrichtenkopffelder mit demselben Feldnamen KÖNNEN in einer Nachricht vorhanden sein, wenn und nur wenn der gesamte Feldwert für dieses Kopffeld als durch Kommas getrennte Liste definiert ist [d. h. #(Werte)].

Set-Cookieist ein solcher Feldname, da der Feldwert durch Kommas getrennt ist. Ich hätte nichts dagegen, sie wie im HTTP RPC vorgeschlagen zusammenzufügen.

Antwort1

Welche Version von Apache? Welche Version von mod_log? Die richtige Antwort könnte sein, entweder einen Fehlerbericht bei Apache einzureichen oder den Patch selbst durchzuführen.

Antwort2

Tatsächlich funktioniert es seit Version 2.0 sofort, mit Ausnahme von Content-type: Jeder Header wird ordentlich mit einem Komma verbunden, wie im HTTP RFC vorgeschlagen.

Der Antwortheader „Set-Cookie“ erfährt ebenfalls eine Sonderbehandlung, wie wir in der log_header_outfolgenden Funktion sehen können 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 ...

verwandte Informationen