سؤال

لدي تطبيق ويب يضيف معلومات سياقية xmlhttprequest. الكائنات باستخدام setrequestheader. API. أنا أستخدم اسم رأس مخصص (مثل X-Foo) و json. قيمة منظمة. إنه ليس جزءا من عنوان URL QueryString أو Post Body لأنه معلومات ميتا حول الطلب.

هل هناك حد حجم عملي لقيمة الرأس؟ إذا تم اقتطاع JSOS الخاص بي، يصبح غير مرغوب فيه. أنا الأكثر قلقا مع حدود في أباتشي 2، Tomcat 6 و IIS 7. فعلت بحث جوجل الحد الأقصى طول رأس HTTP, ، ولكن العديد من النتائج تبدو مؤرخة. هناك بعض التعليقات ذات الصلة في ما حجم سلسلة وكيل المستخدم الحصول على؟ ولكن ليس محددا كما أود.

يحرر:أنا فقط ركض عبر هذا السؤال المماثل - الحد الأقصى على قيم رأس HTTP؟

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

المحلول

نعم، لكن الحدود قابلة للتكوين وتعتمد على النظام الأساسي. علي سبيل المثال، هر لديه حد افتراضي 8K. أعتقد أن IIS 6، لست متأكدا من IIS 7، لديه حد 16 كيلو. ركضت هذا عند استخدام مصادقة Windows المدمجة لعدة مواقع الويب. اتضح أن الرمز الأماني الخاص بي كان كبيرا جدا عند ترميزه في الرأس. لحسن الحظ، هذه قابلة للتكوين. يمكن العثور على إعدادات التسجيل ل IIS في http://support.microsoft.com/kb/820129.. وبعد أعتقد أن الإعدادات الرئيسية لتغييرها هي MaxfieldLength (لكل حجم رأس) و MaxRequestBytes (الحجم الكلي للطلب).

نصائح أخرى

على الرغم من أن كل برنامج خادم الويب لديه بعض القيود، إلا أن هناك فرقا ما إذا كان هناك حد ل خط طلب HTTP. بالإضافة إلى حقول رأس أو لكل حقل رأس.

إليك ملخص:

  • اباتشي 1.3, 2.0, 2.2, 2.3: 8190 بايت (لكل مجال رأس)
  • IIS:
    • 4.0: 2097152 بايت (للحصول على حصة الطلب بالإضافة إلى حقول رأس)
    • 5.0: 131072 بايت, 16384 بايت مع Windows 2000 Service Pack 4 (للحصول على حقول رأس Line Plus)
    • 6.0: 16384 بايت (لكل مجال حقول رأس)
  • هر:
    • 5.5.x./6.0.x.: 49152 بايت (للحصول على حصة الطلب بالإضافة إلى حقول رأس)
    • 7.0.x.: 8190 بايت (للحصول على حصة الطلب بالإضافة إلى حقول رأس)

حتى تختتم: أن تكون مقبولة من قبل جميع خوادم الويب أعلاه، يجب ألا تتجاوز خط طلب الطلب بالإضافة إلى حقول رأس 8190 بايت. وبعد هذا هو أيضا الحد الأقصى لكل حقول رأس (بفعالية أقل).

لأباتشي، وجدت هذا حدود الخادم لأمن Apache مقال يسرد هذه التوجيهات:

  # allow up to 100 headers in a request
  LimitRequestFields 100
  # each header may be up to 8190 bytes long
  LimitRequestFieldsize 8190

ل nginx، large_client_header_buffers. التوجيهات من httpccoremodule يتحكم في هذا:

يجب ألا يكون طول خط الطلب أطول أيضا أكثر من حجم المخزن المؤقت واحد، وإلا فإن العميل يحصل على الخطأ "طلب سيئ" (400).

افتراضيا، فإن حجم المخزن المؤقت واحد يساوي حجم الصفحة، اعتمادا على منصة هذا إما 4K أو 8K

على الرغم من أنه يمكنك تكوين الخادم، فمن غير المرجح أن تقوم حقا بتكوين الطريق بأكمله من خلال جدران الحماية والموازن والوكلاء. الحفاظ على حجم رأس صغير يحتفظ بالمشاكل بعيدا.

يحتوي The Flash Media Server 4.5 على حد الطول الافتراضي القصير للغاية الذي يمكن أن يسبب الخادم لا يستجيب ببساطة، خاصة في الظروف التي يوجد فيها حمولة ملف تعريف الارتباط المعتدل.

يرى: تكوين وإدارة Flash Media Server 4.5: تكوين الخادم تكوين خادم Apache HTTP: حدد الحد الأقصى لطول خط رأس HTTP

في Flash Media Server Adaptor.xml ملف، MaxHeaderLineLengthيحدد العنصر حجم رأس HTTP يمكن أن يتعامل الخادم معالجته. القيمة الافتراضية ل MaxHeaderLineLength هو 1024 بايت. تقوم بعض المتصفحات بإرسال رأس أكبر من 1024 بايت. في هذا السيناريو، يرسل Apache رد فارغ. لإصلاح هذه المشكلة، تكوين MaxHeaderLineLength إلى 8192.

ملاحظة: افتراضيا، فإن الحد الأقصى لحجم رأس Apache HTTP هو 8 كيلو بايت (8190 بايت بالإضافة إلى عودة النقل).

وضع هذا هنا في حالة تعطل حجم حجم الرأس على خادم الوسائط فلاش شخص آخر.

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