注:圖片均來自網絡
超文本傳輸協議HTTP主要特點
- 支持客戶/服務器模式
- 簡單快速
- 程序規模小,通信速度快
- 靈活
- 允許傳輸任意類型的數據對象
- 無連接
- 每次連接,只處理一個請求,節省傳輸時間
- 無狀態
- 協議對於事物處理沒有記憶
HTTP請求結構:
HTTP響應結構:
請求/響應的步驟:
- 客戶端連接到Web服務器
- 發送HTTP請求
- 服務器接收請求並返回HTTP響應
- 釋放連接TCO連接
- 客戶端瀏覽器解析HTML內容
在瀏覽器地址欄鍵入URL,按下回車之後經歷的流程:
- DNS解析域名地址,獲取對應的IP地址
- 從本地DNS緩存或者DNS服務器中獲取域名的解析
- 解析域名地址,獲取對應的IP地址
- TCP連接
- 三次握手
- 發送HTTP請求
- 服務器處理請求並返回HTTP報文
- 瀏覽器解析渲染頁面
- 連接結束
- 四次揮手
HTTP狀態碼:
1xx:指示信息--表示請求已接受
2xx:成功--表示請求已被成功接收、理解、接受
3xx:重定向--要完成請求必須進行更進一步的操作
4xx:客戶端錯誤--請求有語法錯誤或請求無法實現
5xx:服務端錯誤--服務器未能實現合法的請求
常見狀態碼:
200 OK:正常的返回信息。
400 BaeRequest:客戶端請求有語法錯誤,不能被服務器所理解。
401 Unauthorized:請求未經授權,這個狀態碼必須和WWW-Authenticate報頭域一起使用。
403 Forbidden:服務器收到請求,但是拒絕提供服務。
404 Not Found:請求資源不存在,eg,輸入了錯誤的URL。
405 Method not Allowed:請求行中指定的請求方法不能被用於請求相應的資源。
500 Internal Server Error:服務器發生不可預期的錯誤。
503 Server Unavailavle:服務器當前不能處理客戶端的請求,一段時間後可能恢復正常。
GET請求和POST請求的區別:
從三個層面來解答
- Http報文層面:GET將請求信息放在URL後面,POST放在報文體中。
- 普通的HTTP都是採用明文傳輸的,POST請求也一樣
- 數據庫層面:GET符合冪等性和安全性,POST不符合。
- 冪等性表示對數據庫的一次操作或多次操作,對數據結果是無影響的。
- 安全性表示不會對數據庫進行修改,因此符合安全性。
- PUT請求符合冪等性,因爲不會添加新的數據
- 其他層面:GET可以被緩存、被存儲,而POST不行