1. 程式人生 > >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 : 2803
Firefox:65536
Chrome:8182
Safari:80000
Opera:190000 但對於get請求,在url的長度限制範圍之內,請求的引數個數沒有限制。 2. Post資料的長度限制
       Post資料的長度限制與url長度限制類似,也是在Http協議中沒有規定長度限制,長度限制可以在伺服器端配置最大http請求頭長度的方式來實現。 3. Cookie的長度限制
Cookie的長度限制分瀏覽器和伺服器來總結:
瀏覽器所允許的每個域下的最大cookie數目:
IE :原先為20個,後來升為50個

Firefox: 50個
Opera:30個
Chrome:180個
Safari:無限制 當Cookie數超過限制數時瀏覽器的行為:IE和Opera會採用LRU演算法將老的不常使用的Cookie清除掉,Firefox的行為是隨機踢出某些Cookie的值。當然無論怎樣的策略,還是儘量不要讓Cookie數目超過瀏覽器所允許的範圍。 瀏覽器所允許的每個Cookie的最大長度 Firefox和Safari:4079位元組
Opera:4096位元組
IE:4095位元組 伺服器:Cookie會被附在每次http請求頭中傳遞給伺服器,因此會受到伺服器請求頭長度的限制。