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.

Artigos relacionados