En PHP, get_headers() acepta un contexto de flujo como tercer argumento. En PHP 8, una comprobación de cabeceras para una URL HTTP puede llevar su 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');
}

El proxy es un extremo TCP para el contenedor de flujo HTTP. Sustituye su host y puerto de ejemplo por un candidato sin autenticación de la lista de proxies HTTP para esta comprobación HTTP pública. request_fulluri proporciona el URI completo de destino en la línea de solicitud HTTP, como esperan muchos proxies de reenvío. Este contexto pertenece a esta llamada; no cambia el contexto predeterminado que usan otras lecturas de URL.

A pesar del nombre de la función, su método de solicitud predeterminado es GET. El método HEAD explícito pide al servidor metadatos de respuesta sin el cuerpo de respuesta correspondiente. Un servidor puede rechazar HEAD o tratarlo de forma distinta, así que una comprobación de cabeceras correcta no demuestra que una descarga posterior vaya a funcionar.

Aquí, el seguimiento de redirecciones está desactivado para inspeccionar la primera respuesta. Una cabecera Location y un estado de redirección son entonces resultados útiles en lugar de una instrucción para obtener otra URL. Si la comprobación debe seguir redirecciones, cambia esa política a propósito y ten en cuenta las cabeceras de respuesta adicionales.

El argumento false mantiene una matriz de cabeceras indexada. Usa true cuando el análisis asociativo sea más útil.

Artículos relacionados