HTTP協議對URI長度,POST數據長度及COOKIE長度限制說明

1. URL長度限制


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


雖然Http協議規定了,可是Web服務器瀏覽器對URI都有本身的長度限制。算法


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


瀏覽器的限制:每種瀏覽器也會對url的長度有所限制,下面是幾種常見瀏覽器的url長度限制:(單位:字符)tomcat


  • IE : 2803服務器

  • Firefox:65536cookie

  • Chrome:8182測試

  • Safari:80000url

  • Opera:190000spa


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


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請求頭中傳遞給服務器,所以還會受到服務器請求頭長度的影響。

相關文章
相關標籤/搜索