Http協議中的各種長度限制總結
剛才無事網上瞎逛的時候看到有同學總結自己最近去面試時被問到的面試題,看到有人被問到URL的最大長度、Cookie的最大長度之類的問題,如果平時不是很注意http細節的話這些問題還真是不好回答,另外除了面試,知道這些長度限制,有時候開發時碰到問題心裡也能有個數,想到自己對這些問題也不是特別熟悉,於是就在這裡總結下——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 : 2083
Firefox:65536
Chrome:8182
Safari:80000
Opera:190000
對於get請求,在url的長度限制範圍之內,請求的引數個數沒有限制。
2. Post資料的長度限制
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
相關文件:HTTP 協議詳解
相關文章
- HTTP協議知識總結HTTP協議
- 各種協議協議
- HTTP協議知識點總結HTTP協議
- Http協議狀態碼總結HTTP協議
- HTTP協議理解與應用總結HTTP協議
- HTTP 協議中的併發限制及隊首阻塞問題HTTP協議
- HTTP 協議知識點總結(二)HTTPSHTTP協議
- 讀HTTP協議(RFC-2616)總結HTTP協議
- LaTeX中各種常用盒子的使用總結
- 【傳輸協議】http協議GET與POST傳遞資料的最大長度能夠達到多少協議HTTP
- ENSP上各種基礎協議的配置協議
- HTTP 協議六種請求方法HTTP協議
- HTTP協議中你必須知道的三種資料格式HTTP協議
- caffe中各種cblas的函式使用總結函式
- 關於Android中各種尺寸的總結Android
- 程式猿的年終總結,各種版本各種殘
- RTSP協議、RTMP協議、HTTP協議的區別協議HTTP
- 你該瞭解的HTTP協議(彙總)HTTP協議
- Html中的各種高度寬度HTML
- 02 前端HTTP協議(圖解HTTP) 之 簡單的HTTP協議前端HTTP協議圖解
- HTTP協議中的短輪詢、長輪詢、長連線和短連線HTTP協議
- HTTP 協議HTTP協議
- [HTTP協議]HTTP協議
- http協議HTTP協議
- BGP協議總結(2)協議
- Maven-POM中的各種scope的行為總結Maven
- HTTP協議中Content-TypeHTTP協議
- Linux Shell中各種括號用法總結!Linux
- 理解HTTP協議中的multipart/form-dataHTTP協議ORM
- HTTP 協議中的 Content-EncodingHTTP協議Encoding
- iOS9中HTTP協議的變化iOSHTTP協議
- Http協議中Get和Post的淺談HTTP協議
- 談談HTTP協議中的短輪詢、長輪詢、長連線和短連線HTTP協議
- Http請求get與post請求方式的各種相關面試總結HTTP面試
- http協議分析HTTP協議
- 理解http協議HTTP協議
- HTTP協議概述HTTP協議
- HTTP 協議類HTTP協議