У 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, коли асоціативний розбір корисніший.

Схожі статті