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 վերնագիրը և վերահղման կարգավիճակը այդ ժամանակ օգտակար արդյունքներ են, այլ ոչ թե հրահանգ՝ այլ URL բերելու։ Եթե ստուգումը պետք է հետևի վերահղումներին, գիտակցաբար փոխեք այդ քաղաքականությունը և հաշվի առեք լրացուցիչ պատասխանի վերնագրերը։
false արգումենտը պահպանում է ինդեքսավորված վերնագրերի զանգված։ Օգտագործեք true, երբ ասոցիատիվ վերլուծությունն ավելի օգտակար է։