在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的長度限制範圍之內,請求的引數個數沒有限制。
post資料的長度限制與url長度限制類似,也是在http協議中沒有規定長度限制,長度限制可以在伺服器端配置最大http請求頭長度的方式來實現。
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請求頭中傳遞給伺服器,因此還會受到伺服器請求頭長度的影響。
html5提供了本地儲存機制來供web應用在客戶端儲存資料,儘管這個並不屬於http協議的一部分,但是隨著html5的流行,我們可能需要越來越多使用localstorage,甚至當它普及的時候跟它打交道就會同今天我們跟cookie打交道一樣多。
對於localstorage的長度限制,同cookie的限制類似,也是瀏覽器針對域來限制,只不過cookie限制的是個數,localstorage限制的是長度:
firefox\chrome\opera都是允許每個域的最大長度為5mb
但是這次ie比較大方,允許的最大長度是10mb
HTTP協議中的各種長度限制
request http請求訊息 結構 乙個請求行.部分訊息頭,以及實體內容,其中的一些訊息內容都是可選擇的.訊息頭和實體內容之間要用空行分開.get index.html http 1.1 請求頭,下面都是訊息頭.accept encoding gzip,deflate 到上面都是訊息頭,下面乙個...
http各種中的各種timeout
1.tomcat 可以通過telnet測試 在tomcat的server.xml中,有個配置節 uriencoding utf 8 其中的connectiontimeout代表的意思是 在已經建立的http連線上,如果5000毫秒沒有資訊傳輸,怎伺服器關閉連線。但如果tomcat伺服器內容消耗的時間...
認識tcp ip協議中的http協議
一 什麼是tcp ip tcp ip協議是乙個協議集合,按照層次分為鏈路層 網路層 傳輸層 應用層四個層次。與tcp ip協議並列的還有osi網路框架模型 開放式系統互連參考模型,分為物理層 資料鏈路層 網路層 傳輸層 會話層 表示層 應用層七個層次 1.鏈路層 用來處理連線網路的硬體部分,包括控制...