سؤال

أقوم حاليًا ببناء برنامج نصي PHP الذي سيجيب على HTTP "304 لم يتم تعديله" عند الحاجة.

(يرى السؤال رقم 2086712 لما أفعله حتى الآن).

حاليا أجيب على ما يلي:

  • إذا تم تعديلها
  • إذا لم يكن المباراة

لكنني اكتشفت أن 3 رؤوس أخرى يمكن أن تؤدي إلى "الحصول على مشروط" (انظر http://www.w3.org/protocols/rfc2616/rfc2616-sec9.html#sec9.3):

  • إذا المباراة
  • إذا لم يتم التعرف على
  • إذا كان المدى

يبدو آخر 2 لا يخوضون نظام التخزين المؤقت الخاص بي (يبدو أنه يتم استخدامه عند استئناف التنزيلات "الكبيرة") لكنني لم أجد إذا كان "إذا كان المباراة" يمكن استخدامه في نظامي.

هل يتم استخدام "IF-Match" في الوكلاء أو متصفح الويب لمحتوى الصفحة "العادي"؟ كيف تختلف "If-Match" عن "If-Match"؟

هل يجب أن أؤيد هؤلاء الثلاثة أم بعضهم فقط؟ أي مساعدة موضع ترحيب!

هل كانت مفيدة؟

المحلول

إذا المباراة

يجب أن يعيد الخادم استجابة 412 (فشل شرط مسبق) ، إذا:

  • لا تتطابق أي من علامات الكيان ،
  • أو "*" يتم تقديمه ولا يوجد كيان حالي

يجب تجاهل IF-Match ، إذا:

  • تطابق أي من علامات الكيان
  • أو إذا كان الطلب ينتج عنه أي شيء آخر غير حالة 2xx أو 412 (بدون مباراة)
  • أو إذا تم إعطاء "*" وأي كيان حالي موجود للمورد

الخلاصة على إذا المباراة:

  • معنى "IF-Match: *" هو أنه يجب تنفيذ الطريقة إذا كان التمثيل المحدد بواسطة خادم Origin ... موجودًا ، ويجب عدم تنفيذه إذا لم يكن التمثيل موجودًا.

IF-Match في RFC2616

إذا لم يتم التعرف على

يجب أن يعيد الخادم استجابة 412 (فشل شرط مسبق) ، إذا:

  • تم تعديل البديل المطلوب منذ الوقت المحدد

إذا تم تجاهل ما إذا لم يتم تجاهله-إذا

  • لم يتم تعديل المورد المطلوب منذ الوقت المحدد في هذا الحقل
  • أو الطلب بشكل طبيعي (أي ، بدون رأس IF غير المعدل) سيؤدي إلى أي شيء آخر غير حالة 2xx أو 412
  • أو التاريخ المحدد غير صالح

إذا لم يتم التعدّل في RFC2616

إذا كان المدى

بشكل غير رسمي ، فإن معناها هو "إذا لم يتغير الكيان ، فأرسل لي الجزء (الأجزاء) التي أفتقدها ؛ خلاف ذلك ، أرسل لي الكيان الجديد بأكمله "

الشروط المسبقة:

  • ال If-Range رأس ينبغي يتم استخدامها فقط مع أ Range رأس ، و يجب يتم تجاهله إذا كان الطلب لا يشمل أ Range رأس ، أو إذا كان الخادم لا يدعم العملية الفرعية.

يجب أن يوفر الخادم استجابة 206 (محتوى جزئي) ، إذا If-Range يطابق الرأس علامة الكيان الحالية للكيان. خلاف ذلك ، يجب على الخادم إرجاع الكيان بأكمله باستخدام استجابة 200 (موافق).

IF المدى في RFC2616

نتائج غير محددة

إن وجود المزيج التالي من الرؤوس يؤدي إلى نتيجة غير محددة:

  • إذا تم تعديلها و إذا المباراة
  • إذا تم تعديلها و إذا لم يتم التعرف على
  • إذا لم يكن المباراة و إذا المباراة
  • إذا لم يكن المباراة و إذا لم يتم التعرف على

تم تحلل هذه القواعد من القواعد التالية (يمكن العثور عليها في RFC2616):

  • إذا المباراة و (إذا لم يكن المباراة أو إذا تم تعديلها)
  • إذا تم تعديلها و (إذا المباراة أو إذا لم يتم التعدّل)
  • إذا لم يكن المباراة و (إذا المباراة أو إذا لم يتم التعدّل)
  • إذا لم يتم التعرف على و (إذا لم يكن المباراة أو إذا تم تعديلها)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top