4、http協議詳解
1、web 交互的基本流程
客戶端根據用戶輸入的地址信息請求服務器,服務器在接收到用戶的請求後進行處理,然後將處理結果響應給客戶端,客戶端將響應結果展示給用戶。
專業術語:
請求:客戶端根據用戶地址信息將數據發送給服務器的過程
響應:服務器將請求的處理結果發送給瀏覽器的過程
問題:
客戶端也就是瀏覽器的版本是有很多的,服務器的版本也是有很多的,如何實現不同版本的瀏覽器和不同版本的服務器之間的數據交互呢?
解決:
規範瀏覽器和服務器的數據交互的格式。
實現:
HTTP 協議
2、HTTP 的概念和介紹
概念:
超文本傳輸協議(Hyper Text Transfer Protocol)
作用:
規範了瀏覽器和服務器的數據交互
特點:
1、簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯系的類型不同。由於HTTP 協議簡單,使得HTTP 服務器的程序規模小,因而通信速度很快
2、靈活:HTTP 允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type 加以標記。
3、無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開連接。采用這種方式可以節省傳輸時間。HTTP1.1 版本後支持可持續連接。
4、無狀態:HTTP 協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。
5、支持B/S 及C/S 模式。
3、HTTP 的交互流程
HTTP 的交互流程一般分為四個步驟(一次完整的請求):
步驟一:客戶端和服務器端建立連接
步驟二:客戶端發送請求數據到服務器端(HTTP 協議)
步驟三:服務器端接收到請求後,進行處理,然後將處理結果響應客戶端(HTTP 協議)
步驟四:關閉連接客戶端和服務器端的連接(HTTP1.1 後不會立即關閉)
4、HTTP 協議之請求格式
請求格式的結構:
請求頭:請求方式、請求的地址和HTTP 協議版本
請求行:消息報頭,一般用來說明客戶端要使用的一些附加信息
空行: 位於請求行和請求數據之間,空行是必須的。
請求數據:非必須。
註意: 一張網頁的內容是極其豐富的,瀏覽器會遵循HTTP 請求的格式將有效數據發送給服務器。
示例(get 請求方式):
示例(post 請求方式):
5、HTTP 協議之請求方式
根據HTTP 標準,HTTP 請求可以使用多種請求方法。
HTTP1.0 定義了三種請求方法: GET, POST 和HEAD 方法。
HTTP1.1 新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和CONNECT 方法。
get 和post 請求方式的區別:
get請求方式:
請求數據會以?的形式隔開拼接在請求頭中,不安全,沒有請求實體部分。HTTP 協議雖然沒有規定請求數據的大小,但是瀏覽器對URL 的長度是有限制的,所以get 請求不能攜帶大量的數據。
post 請求方式:
請求數據在請求實體中進行發送,在URL 中看不到具體的請求數據,安全。適合數據量大的數據發送。
6、HTTP 協議之響應
響應格式的結構:
響應行(狀態行):HTTP 版本、狀態碼、狀態消息
響應頭:消息報頭,客戶端使用的附加信息
空行:響應頭和響應實體之間的,必須的。
響應實體:正文,服務器返回給瀏覽器的信息
示例:
HTTP 常見響應狀態碼含義:
HTTP 狀態碼由三個十進制數字組成,第一個十進制數字定義了狀態碼的類型,後兩個數字沒有分類的作用。HTTP 狀態碼共分為5 種類型:
常見狀態碼:
200 OK //客戶端請求成功
400 Bad Request //客戶端請求有語法錯誤,不能被服務器所理解
401 Unauthorized //請求未經授權,這個狀態代碼必須和WWW-Authenticate 報頭域一起使用
403 Forbidden //服務器收到請求,但是拒絕提供服務
404 Not Found //請求資源不存在,eg:輸入了錯誤的URL
500 Internal Server Error //服務器發生不可預期的錯誤
503 Server Unavailable //服務器當前不能處理客戶端的請求,一段時間後可能恢復正常
4、http協議詳解