هو تطبيق HTTP الذي يرسل طول المحتوى أو ترميز النقل مع استجابة 204 بدون محتوى مكسورة؟

StackOverflow https://stackoverflow.com/questions/912863

  •  06-09-2019
  •  | 
  •  

سؤال

لا أستطيع أن أقول من RFC 2616. ما إذا كان يجب على عميل HTTP قبول استجابة 204 لا يوجد أي محتوى يتضمن طول المحتوى: 0 أو ترميز النقل: رؤوس مقطوعة. يبدو أن هذه الرؤوس تكسر بعض عملاء HTTP وكلاء، والتي تحاول على ما يبدو قراءة جسم الاستجابة الفارغة، ولكن المواصفات يقرأ:

  1. يتم دائما إنهاء رسالة الاستجابة التي "يجب ألا" رسالة نصية (مثل ردود 1xx و 204 و 304 وأي استجابة لطلب رأس) دائما من قبل الخط الفارغ الأول بعد حقول الرأس، بغض النظر عن الكيان حقول الرأس الموجودة في الرسالة.

بالنسبة لي "بغض النظر عن حقول رأس الكيان" يعني أن العملاء يجب أن يتسامحون بهذه الحالة. ال مكتبة Erlang HTTP. اختار هذا التفسير. ومع ذلك، lighthttpd. و IBM. اختار التفسير المعاكس - يجب ألا يتضمن الخادم رؤوس هذه الردود المحظورة من وجود جثث.

لذلك فيجب أن يقوم تطبيق الويب بإزالة الرؤوس من الاستجابة، أو يجب أن يتسامح مع البنية التحتية للشبكة والعملاء في 204 أي محتوى، 304 غير تعديل، إلخ؟

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

المحلول

وفقا ل RFC7230 (يرجى الاطلاع http://tools.ietf.org/html/rfc7230#section-3.3.1.) في نهاية الصفحة 29 ينص:

يجب ألا يرسل الخادم حقل رأس ترميز النقل في أي استجابة برمز حالة 1XX (إعلامية) أو 204 (بدون محتوى).

لذلك، يجب ألا يرسل تطبيق الويب رؤوس هذه الرد.

نصائح أخرى

لا أستطيع أن أخبرك ما هو الصحيح، حيث لا أعرف بروتوكول HTTP في هذه التفاصيل.

ومع ذلك، يجب عليك أن تسأل نفسك:

  1. هل يمكنني تغيير طلبي لإزالة تلك الرؤوس؟
  2. أو يمكنني تغيير المستهلكين في طلبي لتجاهل تلك الرؤوس؟

في رأيي، يجب ألا يرسل التطبيق هؤلاء الرؤوس في هذه الحالة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top