Http協議中的各種長度限制總結

1. URL長度限制

在Http1.1協議中並沒有提出針對URL的長度進行限制,RFC協議裏面是這樣描述的,HTTP協議並不對URI的長度做任何的限制,服務器端必須能夠處理任何它們所提供服務多能接受的URI,並且能夠處理無限長度的URI,如果服務器不能處理過長的URI,那麼應該返回414狀態碼。

雖然Http協議規定了,但是Web服務器和瀏覽器對URI都有自己的長度限制。

服務器的限制:我接觸的最多的服務器類型就是Nginx和Tomcat,對於url的長度限制,它們都是通過控制http請求頭的長度來進行限制的,nginx的配置參數爲large_client_header_buffers,tomcat的請求配置參數爲maxHttpHeaderSize,都是可以自己去進行設置。

瀏覽器的限制:每種瀏覽器也會對url的長度有所限制,下面是幾種常見瀏覽器的url長度限制:(單位:字符)
IE : 2803
Firefox:65536
Chrome:8182
Safari:80000
Opera:190000

對於get請求,在url的長度限制範圍之內,請求的參數個數沒有限制。

2. Post數據的長度限制

Post數據的長度限制與url長度限制類似,也是在Http協議中沒有規定長度限制,長度限制可以在服務器端配置最大http請求頭長度的方式來實現。

3. Cookie的長度限制

Cookie的長度限制分這麼幾個方面來總結。

(1) 瀏覽器所允許的每個域下的最大cookie數目,沒有去自己測試,從網上找到的資料大概是這麼個情況
IE :原先爲20個,後來升級爲50個
Firefox: 50個
Opera:30個
Chrome:180個
Safari:無限制

當Cookie數超過限制數時瀏覽器的行爲:IE和Opera會採用LRU算法將老的不常使用的Cookie清除掉,Firefox的行爲是隨機踢出某些Cookie的值。當然無論怎樣的策略,還是儘量不要讓Cookie數目超過瀏覽器所允許的範圍。

(2) 瀏覽器所允許的每個Cookie的最大長度

Firefox和Safari:4079字節
Opera:4096字節
IE:4095字節

(3) 服務器中Http請求頭長度的限制。Cookie會被附在每次http請求頭中傳遞給服務器,因此還會受到服務器請求頭長度的影響。

4. Html5 LocalStorage

Html5提供了本地存儲機制來供Web應用在客戶端存儲數據,儘管這個並不屬於Http協議的一部分,但是隨着Html5的流行,我們可能需要越來越多使用LocalStorage,甚至當它普及的時候跟它打交道就會同今天我們跟Cookie打交道一樣多。

對於LocalStorage的長度限制,同Cookie的限制類似,也是瀏覽器針對域來限制,只不過cookie限制的是個數,LocalStorage限制的是長度:

Firefox\Chrome\Opera都是允許每個域的最大長度爲5MB
但是這次IE比較大方,允許的最大長度是10MB
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章