1、什么是 http 傳輸協議
http(超文本傳輸協議)是一個簡單的請求-響應協議,運行在TCP之上,指定了客戶端可能發送給服務器什么樣的消息以及得到什么樣的響應。
一個http請求的步驟,包括:建立連接通道、前端發送請求給后端、后端返回響應給前端、斷開連接。(只能由前端發起)
建立連接:基於 TCP/IP 的三次握手,確保前后端通信的正常進行。(前端發送一個 SYN 包給后端,后端返回 SYN 包及一個 ACK 包給前端,最后前端再將 ACK+1 返回給后端)
前端發送請求:以報文的形式發送請求(請求報文)
后端響應:以報文形式返回響應(響應報文)
斷開連接:基於 TCP/IP 的四次揮手,確保前后端斷開連接。(前端發送一個 fin 給后端,后端返回 fin+2 和 ack 給前端,前端再將 ack+1 返回給后端,即徹底斷開連接)
2、響應狀態碼
響應報文內的一個信息,表示本次請求的狀態:成功、失敗、緩存...
共分為5類:
- 100-199:表示連接繼續,繼續請求(很少見,基本見不到)
- 200-299:表示各種意義上的請求成功
- 300-399:表示重定向,本該請求的一個路徑被服務端更換(原本想請求的路徑被服務端自動處理更換了一個路徑,常見狀態碼為 304:表示緩存,對已請求的頁面,在緩存中加載,節約性能)
- 400-499:表示客戶端錯誤,常見404:請求地址錯誤,403:權限不夠,無法查看
- 500-599:表示服務端錯誤,常見502:服務器維護或過載
3、常見請求方式:
- GET 向服務器獲取信息
- POST 向服務器發送信息
- PUT 向服務器發送並讓服務器添加
- DELETE 讓服務i器刪除
- HEAD 僅用於獲取響應頭
- PACTH 類似與 PUT 只不過更傾向於更新局部數據
- CONNECT 預留方式,將管道連接更改為代理連接使用
- OPTIONS 用於允許前端查看服務端性能
4、GET AND POST 區別
- 語義化不同:GET傾向於從服務器獲取數據,POST傾向於向服務器提交數據
- 傳遞參數的方式不同:GET請求直接在地址欄后面拼接參數,POST請求在請求體里面傳遞
- 參數大小限制不同:GET請求大小一般不超過2KB,POST理論上大小無限制(但會被服務器限制)
- 緩存能力:GET會被瀏覽器主動緩存,POST不會被瀏覽器主動緩存
- 安全性能:GET請求安全性能比較低(明文發送),POST請求相對安全性比較高(暗文發送)
- 數據格式:GET數據格式必須是 url 編碼的格式,如果不是,會自動轉換成 url 編碼格式,POST數據格式理論上無要求,但是需和請求頭內的 content-type 保持一致
注意:當需要傳遞與用戶信息相關的信息時,必須使用 POST 發送
當制作登錄頁面發送信息時,必須使用 POST 發送
5、HTTP 與 HTTPS 區別
- http是超文本傳輸協議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協議。
- http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
- http是免費的,大部分https需要收費