O PHP headers_list () não está mostrando todos os cabeçalhos
De acordo com a documentação:http://php.net/manual/en/function.headers-list.php, e este comentário:http://php.net/manual/en/function.headers-list.php#110330, código php:
<?php var_dump(header_list()); ?>
Não mostra os cabeçalhos de status.
Esse comportamento estranho é estranho. Portanto, existem duas perguntas:
Por quê? (Não tenho certeza se essa pergunta é baseada em opinião, se for, e não há explicação REAL, por favor, omita-a. Quero dizer que às vezes perguntas baseadas em opinião não são baseadas em opinião e realmente têm explicação, e isso não pode ser previsto antes de serem solicitados).Eu sei que posso usar minha própria função para definir o cabeçalho, que o definirá e, além disso, lembre-se de que esse cabeçalho foi definido. Mas isso é meio que ... solução alternativa, pois header_list () tem certezaAQUI, POR ISSO. Além disso, esses cabeçalhos estão em algum lugar na memória do mecanismo php, portanto, salvá-los pela segunda vez no script não é eficiente em termos de memória. Assim...Qual é a porta dos fundos para obter todos os cabeçalhos, não tão estúpidos quanto a solução abaixo? Isso pode ser útil, por exemplo, como parte da classe de depuração / desenvolvedor que está processando todos os dados do "desenvolvedor" como comentários html no final da página.É claro que estou omitindo o cabeçalho do tamanho do conteúdo, que é muito cedo para prever.Parece que essa função omite todos os cabeçalhos que não possuem dois pontos ... Está certo?Para postar mais código, solução alternativa simples para a função de cabeçalho (linear não objeto, usando classe global e não estática apenas para mostrar a ideia). Supondo que a função de cabeçalho esteja omitindo cabeçalhos sem dois pontos (o que pode não ser verdade ...):
<?php
// Mechanism:
$headers = array();
function setHeader($header) {
header($header);
if (strpos($header, ':') === false) {
global $headers;
$headers[] = $header;
}
}
function getHeaders() {
global $headers;
return array_merge($headers, header_list());
}
// Example:
setHeader('HTTP/1.1 404 Not Found');
var_dump(getHeaders());
?>