一.HTTP基本知識
超文本傳輸協定HTTP:是一種簡單的請求-響應協定,通常在TCP上運作。它指定用戶端可以向伺服器發送哪些消息以及将得到什麼響應。
HTTP:
- 文本:html,字元串...
- 超文本:音樂,圖檔,視訊等等。
-
端口号80。
Https:比http安全,端口:443。
二.http1.0和http2.0對比
http1.0:規定浏覽器和伺服器僅保持短期連接配接。
浏覽器的每個請求都需要與伺服器建立TCP連接配接。伺服器完成請求處理後,會立即斷開TCP連接配接。伺服器不會跟蹤每個客戶,也不會記錄過去的請求。
HTTP 1.1:支援持久連接配接,預設情況下使用持久連接配接。
可以在同一TCP連接配接中傳輸多個HTTP請求和響應。多個請求和響應可以重疊,并且可以同時執行多個請求與響應。更多的請求頭和響應頭(例如,HTTP 1.0沒有主機字段)。
三.HTTP請求
以B站為例:
打開F12,找到bilibili,檢視Headers:詳細解析如下:
3.1 正常标頭
正常标頭如下:
Request URL: https://www.bilibili.com/
Request Method: GET
Status Code: 200
Remote Address: 120.192.82.75:443
Referrer Policy: strict-origin-when-cross-origin
上述正常标頭解釋:
Request URL:請求 URL。 b站的域名
Request Method: 請求方式。 get方法
Status Code:狀态碼。 200
Remote Address:遠端位址。 對應b站的遠端位址。
Referrer Policy: 引用站點政策。 引用的協定。
3.2 響應頭
b站的響應頭如下:
cache-control: no-cache
content-encoding: gzip
content-type: text/html; charset=utf-8
set-cookie: innersign=0; path=/; domain=.bilibili.com
上述響應頭解釋:
cache-control:緩存控制。 no-cache禁止使用緩存
content-encoding:編碼格式。 gzip格式
content-type: 連結方式。 text/html; charset=utf-8
3.3請求标頭
請求标頭如下:
:authority: www.bilibili.com
:method: GET
:path: /
:scheme: https
accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
accept-encoding: gzip, deflate, br
accept-language: zh-CN,zh;q=0.9
cache-control: max-age=0
和響應頭對應,基本參數作用相同,差别不大。
3.4請求行
請求行中的請求方法:get
請求方法:get、post、head、delete、put、trace......
Get:請求可以在有限的大小下攜帶更少的參數。資料内容将顯示在浏覽器的URL位址欄中,這是不安全但高效的
Post:請求可以攜帶的參數是無限的,并且大小是無限的。資料内容不會顯示在浏覽器的URL位址欄中,這是安全的,但效率低下。
3.5 消息頭
主要的參數:
Accept
Accept-Encoding
Accept-Language
Cache-Control
Connection
上述消息頭主要的參數解釋如下:
Accept:支援的資料類型。
Accept-Encoding:支援的編碼格式。
Accept-Language:語言環境。
Cache-Control:緩存控制,和上面一樣。
Connection:保活狀态
四.HTTP 響應
響應是存在于伺服器和客服端之間的。
4.1 響應體
Accept:支援的資料類型。
Accept-Encoding:支援的編碼格式。
Accept-Language:語言環境。
Cache-Control:緩存控制,和上面一樣。
Connection:保活狀态。
HOST:主機。
Refresh:重新整理。
Location:重定位。