HTTP的請求報文解析 與 響應報文解析 、 HTTP請求報文中 GET 和 POST的區別 和 URL解析
一、什麼是HTTP?
HTTP是超文字傳輸協議
二、HTTP特點?
(1)HTTP是無狀態協議;
(2)HTTP是web服務使用的協議;
(3)HTTP是基於TCP協議的;
(4)HTTP的通訊方式是客戶端-伺服器模式,即C/S模式
(5)HTTP是應用層協議。
三、HTTP的報文格式
HTTP的報文有兩種,分別是請求報文和響應報文
1.請求報文
請求報文是客戶端給伺服器傳送的報文,報文中包含了一些請求的資訊
欄位解析
(1)方法:實際上就是一些命令,例如get、post、head等
GET:請求讀取由URL所標誌的資訊
POST:給server新增資訊(例如註釋)
HEAD:請求讀取由URL所標誌的資訊的首部
ps:登入頁面一般都用的是POST請求
GET和POST的區別
GET沒有body
POST有body,body中有若干字串,首部行中的Content_Length標記著body的長度
(2)URL
定義:是統一資源定位符
格式:
欄位解釋
HTTP的URL格式
(3)版本
此欄位是HTTP的版本,HTTP有兩個版本:HTTP1.0和HTTP1.1
(4)首部行
首部行中是請求的屬性,冒號分割的鍵值對(首部欄位名與值可以構成鍵值對),每組屬性之間使用\n分隔,遇到空行表示首部行的結束
ps:在報文中遇到<cr><lf><cr><lf>
,此時就表示首部行結束了
(5)首部行中的一些欄位解釋
Content-Length: 標記著body的長度
User-Agent: 標記瀏覽器型別和作業系統的版本
Contet-Type: 標記著資料型別(text/html等)
Host: 客戶端告知伺服器,所請求的資源是在哪個主機的那個埠上
Cookie: 用於在客戶端儲存少量資訊,通常用於實現會話(session)功能
Accept-Language: 標記著使用者所使用的語言
Keep-Alive:time:標記著連線的時間
Connection:close 此時表示是非持久連線
Connection:keep-alive 此時表示是持久連線
(6)實體主體(Body)
空行後面的內容都是Body,Body允許為空字串,如果Body存在,則在首部行中會有一個欄位Content_Length來標記Body的長度
2.響應報文
響應報文是伺服器給客戶端傳送的,用來回復客戶端的請求
欄位解析
(1)版本
與請求報文中的版本欄位的含義一樣,都是標記著HTTP的版本
(2)狀態碼
狀態碼都是由三位數字組成的
1xx:資訊性狀態碼,表示接收的請求正在處理
2xx:成功性狀態碼,請求正常處理完畢例如:200 表示OK
3xx:重定向狀態碼,表示要完成請求還必須採取進一步的行動
303(edirect):是重定向
4xx:客戶端錯誤狀態碼,表示伺服器無法處理請求
例如:404是找不到網頁或者網頁不存在
5xx:伺服器錯誤狀態碼,表示伺服器處理請求出錯
(3)短語
短語就是用來解釋狀態碼,與狀態碼搭配到一起使用的,例如狀態碼200 的短語就是OK,404的短語就是Not Found
(4)首部行
首部行中是請求的屬性,冒號分割的鍵值對(首部欄位名與值可以構成鍵值對),每組屬性之間使用\n分隔,遇到空行表示首部行的結束
ps:在報文中遇到<cr><lf><cr><lf>
,此時就表示首部行結束了
(5)首部行中相關欄位的解釋
Date :表示報文傳送的時間
Last-Modified:表示報文的最後修改時間
Content-Length:標記著Body的長度
(6)實體主體(Body)
空行後面的內容都是Body,Body允許為空字串,如果Body存在,則在首部行中會有一個欄位Content-Length來標記著Body的長度,如果伺服器返回了一個HTML頁面,那麼HTML頁面內容就是在Body中