PHP get_headers: enviar unha solicitude HTTP HEAD a través dun proxy
Pasa un contexto de fluxo directamente a get_headers, escolle HEAD deliberadamente e decide se seguir os redireccionamentos.
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.