En PHP, get_headers() acepta un contexto de fluxo como terceiro argumento. En PHP 8, unha comprobación de cabeceiras para un URL HTTP pode levar a súa propia configuración 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 é un punto final TCP para o envoltorio de fluxo HTTP. Substitúe o seu host e porto de exemplo por un candidato sen autenticación da lista de proxies HTTP para esta comprobación HTTP pública. request_fulluri fornece o URI de destino completo na liña de solicitude HTTP, como esperan moitos proxies de reenvío. Este contexto pertence a esta chamada; non cambia o contexto predeterminado que usan outras lecturas de URL.

A pesar do nome da función, o seu método de solicitude predeterminado é GET. O método HEAD explícito pide ao servidor metadatos de resposta sen o corpo de resposta correspondente. Un servidor pode rexeitar HEAD ou tratalo de forma diferente, así que unha comprobación de cabeceiras correcta non demostra que unha descarga posterior vaia funcionar.

Aquí, o seguimento de redireccionamentos está desactivado para inspeccionar a primeira resposta. Unha cabeceira Location e un estado de redireccionamento son entón resultados útiles en lugar dunha instrución para obter outro URL. Se a comprobación debe seguir redireccionamentos, cambia esa política deliberadamente e ten en conta as cabeceiras de resposta adicionais.

O argumento false mantén unha matriz de cabeceiras indexada. Usa true cando a análise asociativa sexa máis útil.

Artigos relacionados