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 כאשר ניתוח אסוציאטיבי שימושי יותר.