जवाबों:
नहीं, HTTP किसी भी सीमा को परिभाषित नहीं करता है। हालाँकि अधिकांश वेब सर्वर हेडर के आकार को सीमित करते हैं जो वे स्वीकार करते हैं। उदाहरण के लिए Apache की डिफ़ॉल्ट सीमा 8KB है, IIS में यह 16K है । 413 Entity Too Large
यदि हेडर का आकार उस सीमा से अधिक है, तो सर्वर त्रुटि लौटाएगा ।
संबंधित प्रश्न: उपयोगकर्ता एजेंट स्ट्रिंग कितना बड़ा हो सकता है?
जैसा कि vartec ऊपर कहता है, HTTP कल्पना एक सीमा को परिभाषित नहीं करती है, हालांकि कई सर्वर डिफ़ॉल्ट रूप से करते हैं। इसका मतलब है, व्यावहारिक रूप से, निचली सीमा 8K है । अधिकांश सर्वरों के लिए, यह सीमा अनुरोध पंक्ति और सभी शीर्ष लेख फ़ील्ड के योग पर लागू होती है (इसलिए अपने कुकीज़ को छोटा रखें)।
यह ध्यान देने योग्य है कि 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
। लिनोड से मेरा ubuntu सर्वर कर्तव्यनिष्ठता से मुझे सूचित करता है कि उत्तर 4k है।
LimitRequestLine
और LimitRequestFieldSize
प्रत्येक HTTP हेडर लाइन पर व्यक्तिगत रूप से लागू होता है ... "योग ..." का नहीं
HTTP प्रत्येक शीर्ष लेख फ़ील्ड की लंबाई या हेडर अनुभाग की लंबाई पर पूरी तरह से एक पूर्वनिर्धारित सीमा नहीं रखता है, जैसा कि धारा 2.5 में वर्णित है। अलग-अलग हेडर फ़ील्ड की लंबाई पर विभिन्न तदर्थ सीमाएँ व्यवहार में पाई जाती हैं, जो अक्सर विशिष्ट क्षेत्र शब्दार्थ के आधार पर होती हैं।
HTTP हैडर का मान सर्वर कार्यान्वयन द्वारा प्रतिबंधित है। Http विनिर्देश हेडर आकार को प्रतिबंधित नहीं करता है।
एक सर्वर जो एक अनुरोध हेडर फ़ील्ड, या फ़ील्ड्स का सेट प्राप्त करता है, इससे बड़ा होना आवश्यक है कि एक उपयुक्त 4xx (क्लाइंट एरर) स्टेटस कोड के साथ MUST जवाब देना चाहिए। ऐसे हेडर फ़ील्ड्स को अनदेखा करने से तस्करी के हमलों (धारा 9.5) का अनुरोध करने के लिए सर्वर की भेद्यता बढ़ जाएगी।
ऐसा होने पर अधिकांश सर्वर वापस आ जाएंगे 413 Entity Too Large
या 4xx त्रुटि हो जाएगी।
एक क्लाइंट MAY त्याग या ट्रंकट प्राप्त किए गए हेडर फ़ील्ड्स जो क्लाइंट से प्रोसेस करने के लिए बड़े होते हैं यदि क्षेत्र शब्दार्थ ऐसे हैं कि गिराए गए मान को सुरक्षित रूप से अनदेखा किया जा सकता है बिना संदेश फ़्रेमिंग या प्रतिक्रिया शब्दार्थ को बदले।
अनकैप्ड HTTP हेडर साइज सर्वर को हमलों के संपर्क में रखता है और जैविक ट्रैफिक की सेवा करने की क्षमता को कम कर सकता है।
मैंने यह भी पाया कि कुछ मामलों में कई हेडर के मामले में 502/400 का कारण आकार की परवाह किए बिना हेडर की बड़ी संख्या के कारण हो सकता है। डॉक्स से
ट्यून.http.maxhdr एक अनुरोध में हेडर की अधिकतम संख्या निर्धारित करता है। जब एक अनुरोध इस मूल्य (पहली पंक्ति सहित) से अधिक हेडर के साथ आता है, तो इसे "400 खराब अनुरोध" स्थिति कोड के साथ खारिज कर दिया जाता है। इसी तरह, "502 बैड गेटवे" के साथ बहुत बड़ी प्रतिक्रियाएं अवरुद्ध हैं। डिफ़ॉल्ट मान 101 है, जो सभी उपयोगों के लिए पर्याप्त है, यह देखते हुए कि व्यापक रूप से तैनात Apache सर्वर एक ही सीमा का उपयोग करता है। यह इस सीमा को आगे बढ़ाने के लिए उपयोगी हो सकता है ताकि अस्थायी रूप से एक छोटी गाड़ी के आवेदन को उस समय तक काम करने दिया जा सके जब तक यह ठीक नहीं हो जाता। ध्यान रखें कि प्रत्येक नया हेडर प्रत्येक सत्र के लिए 32 बिट मेमोरी की खपत करता है, इसलिए इस सीमा को बहुत अधिक न बढ़ाएं।
https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#3.2-tune.http.maxhdr