Registrar múltiplas ocorrências de um cabeçalho HTTP com Apache

Registrar múltiplas ocorrências de um cabeçalho HTTP com Apache

Commod_logvocê pode registrar os cabeçalhos enviados de volta ao cliente no arquivo access.log com a %{Set-Cookie}odiretiva. Mas se houvermúltiplas ocorrênciasdo mesmo cabeçalho, como éautorizado pelo HTTP RPC,apenas um é logado.

Como podemos tertodos eleslogado?

Para referência, a RFC afirma:

Vários campos de cabeçalho de mensagem com o mesmo nome de campo PODEM estar presentes em uma mensagem se e somente se todo o valor do campo desse campo de cabeçalho for definido como uma lista separada por vírgula [ou seja, #(valores)].

Set-Cookieé um nome de campo, pois o valor do campo é separado por vírgula. Eu não me importaria de uni-los conforme sugerido no HTTP RPC.

Responder1

Qual versão do apache? qual versão do mod_log? A resposta correta pode ser registrar um relatório de bug no Apache ou corrigi-lo você mesmo.

Responder2

Na verdade, desde a versão 2.0, ele funciona imediatamente, exceto Content-type: cada cabeçalho é bem concatenado com uma vírgula, conforme sugerido no HTTP RFC.

O cabeçalho de resposta "Set-Cookie" também tem um tratamento especial como podemos ver na log_header_outfunção de 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 ...

informação relacionada