PHP get_headers: адправіць HTTP HEAD-запыт праз проксі
Перадайце кантэкст патоку непасрэдна ў get_headers, свядома выберайце HEAD і вырашыце, ці ісці за перанакіраваннямі.
У 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 і статус перанакіравання тады становяцца карыснымі вынікамі, а не ўказаннем атрымаць іншы адрас. Калі праверка павінна ісці за перанакіраваннямі, змяніце гэтую палітыку свядома і ўлічыце дадатковыя загалоўкі адказу.
Аргумент false захоўвае індэксаваны масіў загалоўкаў. Выкарыстоўвайце true, калі асацыятыўны разбор больш карысны.