الحد الأقصى على القيم رأس HTTP؟


Answers

كما يقول vartec أعلاه ، لا تحدد مواصفات HTTP حدًا ، على الرغم من أن العديد من الخوادم تفعله افتراضيًا. هذا يعني ، من الناحية العملية ، الحد الأدنى هو 8K . بالنسبة إلى معظم الخوادم ، يتم تطبيق هذا الحد على مجموع سطر طلب وحقول رأس ALL (لذا احتفظ بملفات تعريف الارتباط قصيرة).

  • Apache 2.0 ، 2.2 : 8K
  • nginx : 4K - 8K
  • IIS: يختلف حسب الإصدار ، 8K - 16K
  • القط: يختلف بالإصدار ، 8K - 48K (؟!)

تجدر الإشارة إلى أن nginx يستخدم حجم صفحة النظام بشكل افتراضي ، وهو 4K على معظم الأنظمة. يمكنك التحقق من هذا البرنامج الصغير:

pagesize.c:

#include <unistd.h>
#include <stdio.h>

int main() {
    int pageSize = getpagesize();
    printf("Page size on your system = %i bytes\n", pageSize);
    return 0;
}

ترجمة مع gcc -o pagesize pagesize.c ثم تشغيل. / ./pagesize . خادم بلدي أوبونتو من Linode dutifully يبلغني الجواب هو 4K.

Question

هل هناك حد أقصى مسموح به لحجم رؤوس HTTP؟ إذا كان الأمر كذلك، فما هو؟ إذا لم يكن الأمر كذلك ، فهل هذا شيء محدد للخادم أم أنه المعيار المقبول للسماح برؤوس من أي حجم؟




ووجدت أيضًا أنه في بعض الحالات ، قد يكون سبب 502/400 في حالة وجود العديد من الرؤوس بسبب عدد كبير من الرؤوس دون النظر إلى الحجم. من المستندات

tune.http.maxhdr يحدد الحد الأقصى لعدد الرؤوس في الطلب. عندما يأتي طلب مع عدد من رؤوس أكبر من هذه القيمة (بما في ذلك السطر الأول) ، يتم رفضه برمز الحالة "400 طلب غير صالح". وبالمثل ، يتم حظر الاستجابات الكبيرة جدًا باستخدام "502 Bad Gateway". القيمة الافتراضية هي 101 ، وهي كافية لكل الاستخدامات ، على اعتبار أن خادم Apache الذي يتم نشره على نطاق واسع يستخدم نفس الحد. قد يكون من المفيد دفع هذا الحد بشكل أكبر للسماح مؤقتًا بتشغيل تطبيق عربات التي تجرها الدواب في الوقت الذي يتم إصلاحه فيه. ضع في اعتبارك أن كل رأس جديد يستهلك 32 بت من الذاكرة لكل جلسة ، لذلك لا تضغط على هذا الحد المرتفع للغاية.

https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#3.2-tune.http.maxhdr






Links