الخلاصة

  • كان HTTP/1.0 يستطيع إرسال مسار عبر اتصال إلى عنوان، لكن الخادم لا يتلقى بالضرورة اسم DNS الذي اختاره العميل.
  • أوجب HTTP/1.1 حقل Host كي يضع المسار في فضاء الموارد الصحيح ويتيح لمواقع كثيرة مشاركة عنوان IP.
  • قد تحمل صيغة URI المطلقة authority ثانية، لذلك حددت المواصفات الأولوية وإعادة كتابة الوكيل ورفض Host الغائب أو المكرر أو غير الصالح.

وصل العنوان والشرطة فقط

وثّق RFC 1945 الاستخدام الشائع لـ HTTP/1.0. يحل العميل الاسم، ويفتح TCP إلى عنوان، ثم يرسل غالباً مساراً فقط. عندما يخدم العنوان موقعاً واحداً بدا GET / كافياً، لأن الاتصال اختار الجذر الوحيد ضمناً.

غيّرت مشاركة العنوان ذلك. يستطيع DNS توجيه أسماء كثيرة إلى IP واحد، لكن سؤال DNS لا يصاحب تدفق TCP. يستقبل الخادم العنوان والمنفذ، لا الاسم الذي كتبه المستخدم. وهكذا يمكن أن تنتمي / إلى أكثر من موقع على الطرف نفسه.

أعاد Host السلطة إلى الرسالة

أوجب RFC 2068 عام 1997 حقل Host في طلبات HTTP/1.1. يحمل request line في الاتصال المباشر المسار والاستعلام، ويحمل Host الموقع الشبكي؛ ولا يكتمل المورد إلا بهما.

كان على الخادم إعادة 400 عند غيابه. وعدّت المواصفة هذا تغييراً رئيسياً يتيح مواقع متعددة على IP واحد ويستعيد عناوين خُصصت فقط لتمييز أسماء الويب.

Host إعلان نية لا إثبات ملكية. يجب على origin التحقق من أنه يخدم ذلك الاسم قبل اختيار المسار.

لا يمكن ترك سلطتين تتنافسان

يستخدم الطلب المباشر origin-form. وقد يحمل الطلب إلى proxy صيغة مطلقة فيها scheme وhost وpath. إذا سمت URI موقعاً وسمى Host آخر، ظهرت وجهتان.

قدّم RFC 2068 الـ URI المطلقة. ثم طلب RFC 7230 من الوكيل استبدال Host بسلطة request-target. وظيفة الوسيط إنهاء التعارض لا تمريره.

ولهذا أيضاً يُرفض طلب بلا Host أو بأكثر من Host أو بقيمة غير صالحة. اختيار أول نسخة أو آخرها يسمح للوكيل والذاكرة والأصل بتوجيه الرسالة نفسها إلى فضاءات مختلفة.

الهدف الفعلي نتيجة تركيب

يسمي RFC 7230 الناتج effective request URI. يركب المستلم الإعداد المحلي وسياق الاتصال وشكل الهدف وHost وفق ترتيب محدد. المسار وحده ليس هوية كاملة؛ authority يحدد أين يُقرأ.

يعلن user agent الهدف، ويوحد proxy التمثيل، ويتحقق origin من الاسم ويختار virtual host. يجب أن تستخدم cache وإعادة التوجيه القرار نفسه. ويحذر RFC من إدخال Host غير موثوق في توجيه داخلي أو cache key مشترك.

الخطر ناتج عن قوة الحقل: يغير وجهة التطبيق مع أنه يأتي من طالب الخدمة.

تغير الشكل وبقيت السلطة الواحدة

يحتفظ RFC 9112 بشرط Host واحد صالح في HTTP/1.1. الغموض خطأ لا مادة للتخمين.

يستخدم HTTP/2 الحقل الزائف :authority. ويلزم RFC 9113 الوسيط ببناء Host منه عند التحويل إلى HTTP/1.1 واستبدال النسخة القائمة ما لم يغيّر الهدف أيضاً. عبور البروتوكول لا يبرر هويتين.

فصل Host الموقع عن IP، لكنه وزع على كل خطوة مسؤولية الحفاظ على اسم واحد متسق.

المصادر والحدود

المصادر المغلقة هي RFC 1945 وRFC 2068 وRFC 7230 وRFC 9112 وRFC 9113. تثبت القواعد ودوافعها، لا عدد المواقع الحالي أو عناوين IP الموفرة أو إعدادات المنتجات أو الحوادث. لا يصادق Host على DNS أو TLS أو المرسل.