PHP get_headers: إرسال طلب HTTP HEAD عبر وسيط
مرّر سياق تدفق مباشرة إلى get_headers، واختر HEAD عن قصد، وحدّد ما إذا كنت ستتبع إعادة التوجيه.
يقبل get_headers() في PHP سياق تدفق كوسيطه الثالث. على 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 عندما يكون التحليل الترابطي أكثر فائدة.