يمكن لرد HEAD أن يصف طولا دون إرسال جسم بذلك الطول. عندما يطلب من المساعد قراءة بطاقة شبكة، قد يجمع طول الترويسة مع طول الجسم كأنهما شيء واحد. نحدد هنا الفرق في طريقة HTTP بعينها، ونؤلف بطاقتين لمورد واحد دون طلبه أو تحميل محتواه.
الخلاصة السريعة
يطلب HEAD ترويسات ما كان GET سيرسله، ويأتي الرد الناجح دون جسم. [1] لذلك لا يعني Content-Length فيه أن ذلك العدد من البايتات وصل في جسم هذا الرد.
- يصف HEAD ترويسات نظير GET دون جسم في الرد الناجح. [1] نسمي طريقة الطلب قبل تفسير أي طول مكتوب.
- بطاقة HEAD تذكر Content-Length = 120 ولا جسم؛ بطاقة GET مفترضة تحمل 120 بايتا. الأول وصف لطول، والثاني محتوى نفترضه فقط، لا تنزيل نفذناه.
- إذا أرسل الرد HEAD جسما بالخطأ، يجب تجاهله؛ وتخص ترويسات التمثيل ما كان GET سيحمله. [1] لا نغير العقد بسبب جسم مخالف.
- عند غياب معلومة الطول نتركه غير معلوم، لا صفرا؛ ووجوده لا يثبت قراءة المحتوى أو تطابق ملف حفظ أو نجاح طلب GET لاحق.
ما الذي طلبته الطريقة؟
يوضح MDN أن HEAD يطلب الترويسات التي كان GET سيقدمها، وأن الرد الناجح لا يحمل جسما. [1]
نبدأ قراءة بطاقة المساعد بخانة الطريقة. السؤال ليس كم كلمة في الصفحة، ولا هل عرض المتصفح نصا؛ إنه ما المحتوى الذي يخص هذا الرد. تسمية الطريقة تمنع نسخ معنى طول من سياق آخر دون النظر إلى وجود الجسم.
حين نذكر GET في المقارنة، فهو الطلب النظير الذي تصفه القاعدة، لا طلبا أرسلناه خفية. لا توجد عندنا مادة محتوى يمكن أن نلخصها لمجرد أن ترويساتها موصوفة.
كيف نقارن بطاقتين مؤلفتين؟
نعلن مورد ع في ورقة تعليمية. بطاقة HEAD له تذكر Content-Length = 120 مع جسم غائب. وبطاقة GET مستقلة في ورقتنا نفترض لها جسما من 120 بايتا. العدد متساو، لكن دوره في قراءة البطاقتين ليس متساويا.
لا نطرح 120 من 120 ونقول إننا فقدنا الملف. HEAD لم يقدم وعدا بإرسال الجسم في هذا الرد. كما لا نعلن أن GET حمل فعلا ما وصفناه؛ وجوده فرض في دفتر المقارنة كي تظهر وظيفة المعلومة.
إذا سأل القارئ هل النص عربي، تظل البطاقة الأولى وحدها غير كافية. اسم المورد ورقم الطول لا يعرضان حروف المحتوى ولا يثبتان قراءة نسخة منه.
| البطاقة المؤلفة | الطول المعلن | الجسم في المثال |
|---|---|---|
| HEAD | 120 | غائب وفق العقد |
| GET مفترض | 120 | 120 بايتا مفترضة |
هل جسم مخالف يبدل القاعدة؟
إذا أرسل رد HEAD جسما بالخطأ، يجب تجاهله؛ وتصف ترويسات التمثيل جسم GET الذي كان سيصل. [1]
في ورقة ثالثة، يمكن أن نكتب «وصل نص زائد مع HEAD». هذه جملة تعلن مخالفة مفترضة، وليست حجة لأن نساوي HEAD بالطلب GET. لا نستخرج قاعدة من خطأ بطاقتنا ثم نعممها على كل عميل.
ولا نحدد كيف تعامل برنامج معين مع المخالفة دون سجله. نحن نقرأ ما ينبغي فهمه من العقد المرجعي، ونميز ذلك من تنفيذ قد يكون مختلفا أو لم يختبر أصلا.
ماذا يكتب الملخص عند نقص البيانات؟
إذا لم تقدم البطاقة معلومة طول، نقول إنه غير معلوم في المادة التي قرئت. لا نحول فراغ الخانة إلى صفر، ولا نحسب من طول اسم المورد حجم ملفه. هذا قيد استنتاج على ورقتنا، دون تقرير ما الترويسات التي اختارت خدمة حقيقية إرسالها.
وعند وجود 120، يذكر الملخص أنه طول موصوف، مع غياب جسم HEAD. لو أردنا إعلان قراءة المحتوى أو حفظه، نحتاج المادة والفعل المعنيين، ولا يغني رقم سابق عن تحقق طلب تال.
لم نرسل HEAD أو GET ولم نفحص ردا مخالفا. يستطيع المساعد شرح هذه البطاقات دون أن يدعي أنه نزل ملفا أو شاهد نصه أو أثبت نجاح شبكة.
المصادر ومتابعة القراءة
- MDN: HEAD (يفتح في نافذة جديدة)developer.mozilla.org
أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.
