http協議是建立在tcp/ip協議之上應用層協議,預設埠為80,8080
http協議的的特點是無狀態,無連線
利用抓包工具httpwatch可以獲取報文
http協議的報文傳輸的是ascii碼,在tcp/ip協議之上,主要主要分為三部分
請求行、請求頭、請求體
第一行,包含三個資訊:請求方式,url,http協議版本
get 請求
connection: keep-alivepost 請求
***=man&name=professional區別:
1、url可見性:
get,引數url可見;
post,url引數不可見
2、資料傳輸上:
get,通過拼接url進行傳遞引數;
post,通過body體傳輸引數
3、快取性:
get請求是可以快取的
post請求不可以快取
4、後退頁面的反應
get請求頁面後退時,不產生影響
post請求頁面後退時,會重新提交請求
5、傳輸資料的大小
get一般傳輸資料大小不超過2k-4k(根據瀏覽器不同,限制不一樣,但相差不大)
post請求傳輸資料的大小根據php.ini 配置檔案設定,也可以無限大。
6、安全性
這個也是最不好分析的,原則上post肯定要比get安全,畢竟傳輸引數時url不可見,但也擋不住部分人閒的沒事在那抓包玩。安全性個人覺得是沒多大區別的,防君子不防小人就是這個道理。對傳遞的引數進行加密,其實都一樣。
本質區別:
get產生乙個tcp資料報;post產生兩個tcp資料報。
對於get方式的請求,瀏覽器會把http header和data一併傳送出去,伺服器響應200(返回資料);
而對於post,瀏覽器先傳送header,伺服器響應100 continue,瀏覽器再傳送data,伺服器響應200 ok(返回資料)。
瀏覽器向伺服器傳送一些狀態資料,標識資料等等
乙個資訊一行,包括資訊名:資訊值 按行分隔
user-agent: firefox//表示傳送請求的瀏覽器(請求**端)是firefox
host: shop.100.com//表示請求的主機網域名稱(基於網域名稱的虛擬主機就是靠這個頭判斷的)
cookie:name=itcast//瀏覽器攜帶的cookie資料。
content-length: 40
connection: keep-alive
請求**端項伺服器端,傳送的請求資料!
典型的就是post形式傳送的表單資料!
get請求,沒有請求主體部分!get資料是在請求行中的url上進行傳遞的!
content- type: text/html響應行包括:協議版本、狀態碼、狀態訊息
典型的:
1xx:訊息
2xx:成功
3xx:請求被重定向
4xx:瀏覽器端錯誤
5xx:伺服器端錯誤
典型:500 伺服器內部錯誤
404 請求的頁面沒有找到
403 沒有許可權
200 請求成功
4開頭一般是客戶端出現的問題
5開頭一般是服務端出現的問題
具體的響應碼:
content-type: text/html 內容型別,告知瀏覽器接下來傳送的響應主體資料是什麼格式!
content-length: 響應主體資料的長度!
date: 響應的時間。gmt時間!
主要的響應資料,在瀏覽器的主體區域顯示的資料都是相應主體!
注意,每行,包括相應行和響應頭,都需要乙個 \r\n結尾
可參考
http協議簡單了解
現在我們來看一下這個響應頭的乙個例子,還是只說明一些我們現在需要知道的,其他內容讀者可以自己去查詢相關的內容。在這個例子中的響應頭我們可以看到 1 在第一行就告訴瀏覽器http協議的版本是1.1,狀態碼是200,意思是ok,就是說你的請求我同意了。2 在第二行就是告知瀏覽器我伺服器的名字。4 在第四...
簡單了解http協議
客戶端連上web伺服器後,若想獲得web伺服器中的某個web資源,需遵循一定的通訊格式,http協議用於定義客戶端與web伺服器通訊的格式。客戶端連上伺服器後,向伺服器請求某個web資源,稱之為客戶端向伺服器傳送了乙個http請求。乙個完整的http請求包括乙個請求行 若干請頭 以及實體內容。乙個響...
http協議的簡單了解
http協議是大家在網際網路中最為熟悉的協議,只要上網大家都會遇到,但是,很多人被問道什麼是http協議,http協議的內容是什麼就懵了。這裡,我們隨便聊聊http協議。首先,我們說說協議。我一直覺得 協議 這詞不是很好理解,協商以後達成的決議,其實,就是規定,輪不到使用者協商的規定,就像本朝的法律...