PHP get_headers: enviar um pedido HTTP HEAD através de um proxy
Passe um contexto de fluxo diretamente para get_headers, escolha HEAD deliberadamente e decida se deve seguir redirecionamentos.
Em PHP, get_headers() aceita um contexto de fluxo como terceiro argumento. Em PHP 8, uma verificação de cabeçalhos para um URL HTTP pode transportar a sua própria configuração de proxy:
$context = stream_context_create([
'http' => [
'proxy' => 'tcp://proxy.example.net:8080',
'request_fulluri' => true,
'method' => 'HEAD',
'follow_location' => 0,
'timeout' => 10,
],
]);
$headers = get_headers('http://example.net/file.zip', false, $context);
if ($headers === false) {
throw new RuntimeException('Header request failed');
}O proxy é um ponto final TCP para o invólucro de fluxo HTTP. Substitua o anfitrião e a porta de exemplo por um candidato sem autenticação da lista de proxies HTTP para esta verificação HTTP pública. request_fulluri fornece o URI de destino completo na linha de pedido HTTP, como muitos proxies de encaminhamento esperam. Este contexto pertence a esta chamada; não altera o contexto predefinido usado por outras leituras de URL.
Apesar do nome da função, o seu método de pedido predefinido é GET. O método HEAD explícito pede ao servidor metadados de resposta sem o corpo de resposta correspondente. Um servidor pode rejeitar HEAD ou tratá-lo de forma diferente, pelo que uma verificação de cabeçalhos bem-sucedida não prova que um download posterior terá sucesso.
Aqui, o seguimento de redirecionamentos está desativado para inspecionar a primeira resposta. Um cabeçalho Location e um estado de redirecionamento são então resultados úteis em vez de uma instrução para obter outro URL. Se a verificação deve seguir redirecionamentos, altere essa política deliberadamente e considere os cabeçalhos de resposta adicionais.
O argumento false mantém uma matriz de cabeçalhos indexada. Use true quando a análise associativa for mais útil.