В PHP get_headers() приема контекст на поток като трети аргумент. В PHP 8 проверката на заглавки за HTTP адрес може да носи собствена конфигурация на прокси:

$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');
}

Проксито е TCP крайна точка за HTTP обвивката на потока. Заменете запазените място домакин и порт с неудостоверен кандидат от списъка с HTTP проксита за тази публична HTTP проверка. request_fulluri подава пълния URI на дестинацията в реда на HTTP заявката, както очакват много препращащи проксита. Този контекст принадлежи на това извикване; той не променя контекста по подразбиране, използван от други четения на URL.

Въпреки името на функцията, методът на заявката по подразбиране е GET. Явният метод HEAD иска от сървъра метаданни за отговора без съответното тяло на отговора. Сървърът може да отхвърли HEAD или да го обработва различно, така че успешната проверка на заглавки не е доказателство, че последващо изтегляне ще успее.

Тук следването на пренасочвания е изключено, за да се прегледа първият отговор. Заглавката Location и статусът за пренасочване тогава са полезни резултати, а не инструкция да се извлече друг URL. Ако проверката трябва да следва пренасочвания, променете тази политика умишлено и отчетете допълнителните заглавки на отговора.

Аргументът false запазва индексиран масив от заглавки. Използвайте true, когато асоциативното разбиране е по-полезно.

Подобни статии