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 استفاده کنید.