request(http請求訊息)
結構:乙個請求行.部分訊息頭,以及實體內容,其中的一些訊息內容都是可選擇的.訊息頭和實體內容之間要用空行分開.
get /index.html http/1.1 //請求頭,下面都是訊息頭.
accept-encoding:gzip,deflate//到上面都是訊息頭,下面乙個空行表示完了,接下來是實體內容.
response響應訊息頭
在接收並解析請求訊息後,伺服器以 http 響應訊息響應。相當伺服器對客戶的http的回應
結構:乙個狀態行.部分訊息
頭,以及實體內容,其中的一些訊息內容都是可選擇的.訊息頭和實體內容之間要用空行分開.
http/1.1 200ok //狀態行.下面為訊息頭
server:apache2.2
date:thu, 13 jul 2008 16:29:46 gmt
content-length:2222
content-type:text/html
cache_control:private //和請求訊息頭一樣下面有乙個空行
注意:使用get的方法的請求訊息中是不能包含實體內容的,只有使用post,put和delete的方法請求訊息中才能有實體內容.對 http1.1來講,如果http中有實體內容,但沒有使用權chunked傳輸編碼.那麼訊息頭部分必須包含內容長度欄位.不然不知什麼時候內容才結 束。http1.1中一定要有host欄位
以上訊息頭的結構:每個訊息頭都包含乙個頭欄位名稱,然後依次是冒號,空格值,回車和換行符,欄位不區分大小寫.對訊息頭中的訊息頭可以任何順序排列.
訊息頭可以分為資訊頭,請求頭,響應頭,實體頭四類
如果有多個選項,可以用逗號分隔accept-encoding:gzip ,deflate
在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協議中的各種長度限制總結
在http1.1協議中並沒有提出針對url的長度進行限制,rfc協議裡面是這樣描述的,http協議並不對uri的長度做任何的限制,伺服器端必須能夠處理任何它們所提供服務多能接受的uri,並且能夠處理無限長度的uri,如果伺服器不能處理過長的uri,那麼應該返回414狀態碼。雖然http協議規定了,但...
http 請求 post get 長度限制
一 問題起因 在某專案釋放後bug統計的附件 釋放後問題 裡有 問題 原因 分析 備註 csv處理時,如果處理的主題數過多,發生url引數上限的錯誤 可變長度的引數通過url方式傳遞,會造成這種潛在的錯誤發生。1 屬於2次發生問題,開發方面沒有及時通過checklist等方式向組員傳達相關注意事項 ...
http各種中的各種timeout
1.tomcat 可以通過telnet測試 在tomcat的server.xml中,有個配置節 uriencoding utf 8 其中的connectiontimeout代表的意思是 在已經建立的http連線上,如果5000毫秒沒有資訊傳輸,怎伺服器關閉連線。但如果tomcat伺服器內容消耗的時間...