PHP get_headers: HTTP HEAD хүсэлтийг проксигоор илгээх
Stream контекстийг get_headers-д шууд дамжуулж, HEAD-ийг санаатайгаар сонгож, дахин чиглүүлэлтийг дагах эсэхийг шийдээрэй.
PHP-д get_headers() гурав дахь аргумент болгон stream контекст хүлээж авдаг. PHP 8 дээр HTTP URL-ийн толгой хэсгийн шалгалт өөрийн прокси тохиргоог агуулж болно:
$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');
}Прокси нь HTTP урсгалын бүрхүүлийн TCP төгсгөлийн цэг юм. Түүний орлуулагч хост болон портыг энэ нийтийн HTTP шалгалтад HTTP прокси жагсаалтаас баталгаажаагүй нэр дэвшигчээр солино уу. request_fulluri HTTP хүсэлтийн мөрөнд бүрэн очих URI-г өгдөг бөгөөд олон дамжуулагч прокси үүнийг хүлээдэг. Энэ контекст энэ дуудалтад хамаарна; бусад URL уншилтад хэрэглэгддэг өгөгдмөл контекстийг өөрчлөхгүй.
Функцийн нэрээс үл хамааран түүний өгөгдмөл хүсэлтийн арга нь GET юм. Тодорхой HEAD арга нь серверээс харгалзах хариултын биетгүйгээр хариултын мета өгөгдөл шаарддаг. Сервер HEAD-ийг татгалзах эсвэл өөрөөр боловсруулж болох тул толгой хэсгийн амжилттай шалгалт нь дараагийн татан авалт амжилттай болно гэдгийг батлахгүй.
Энд эхний хариултыг шалгахын тулд дахин чиглүүлэлтийг дагахыг унтраасан. Тэгвэл Location толгой болон дахин чиглүүлэлтийн төлөв нь өөр URL татах заавар биш, ашигтай үр дүн болно. Хэрэв шалгалт дахин чиглүүлэлтийг дагах ёстой бол энэ бодлогыг санаатайгаар өөрчилж, нэмэлт хариултын толгойг тооцоолно уу.
false аргумент нь индексжсэн толгойн массив хадгална. Ассоциатив задлан шинжилгээ илүү ашигтай үед true ашиглана уу.