Web高階 HTTP報文
阿新 • • 發佈:2018-11-07
1. 報文結構
1.1 請求報文結構
- Start-Line
單行,包括 Method + URL + HTTP Version - Headers
多行,形式為 Name:Value - Body
可選,主體部分
Get https://www.baidu.com/ HTTP/1.1 ------------------------------------------------------------------------------- Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7,ja;q=0.6 Cache-Control: no-cache Connection: keep-alive Cookie: ... Host: www.baidu.com Pragma: no-cache Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
1.2 響應報文結構
- Status-Line
單行,包括 HTTP Version + Status Code + Description - Headers
多行,形式為 Name:Value - Body
可選,主體部分
HTTP/1.1 200 OK ------------------------------------------------------------------------------- Bdpagetype: 2 Bdqid: 0xd511e4460001e2c0 Cache-Control: private Connection: Keep-Alive Content-Encoding: gzip Content-Type: text/html;charset=utf-8 Date: Mon, 15 Oct 2018 15:34:34 GMT Expires: Mon, 15 Oct 2018 15:34:34 GMT Server: BWS/1.1 Set-Cookie: BDSVRTM=223; path=/ Set-Cookie: BD_HOME=1; path=/ Set-Cookie: H_PS_PSSID=1434_21124_26350_20928; path=/; domain=.baidu.com Strict-Transport-Security: max-age=172800 Transfer-Encoding: chunked X-Ua-Compatible: IE=Edge,chrome=1 ------------------------------------------------------------------------------- Body...
2. Http2 偽頭部
2.1. 作用
與HTTP1.x使用起始行來指定URI,請求方法,狀態碼等不同, HTTP2使用專門的偽頭部來實現此目的(以':'作為開頭).
所有的偽頭部必須在常用首部之前出現.
:authority: developer.mozilla.org :method: GET :path: /en-US/docs/Web/HTTP/Basics_of_HTTP :scheme: https Referrer Policy: no-referrer-when-downgrade accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 accept-encoding: gzip, deflate, br accept-language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7,ja;q=0.6 cache-control: max-age=0 cookie: ... referer: https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP upgrade-insecure-requests: 1 user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
2.2. 連線專用偽頭部
在HTTP2中除了TE頭部以外不再有連線相關的頭部,包括:Keep-Alive, Proxy-Connection,Transfer-Encoding,和Upgrade等
2.3. 請求偽頭部
- ':method'偽頭部
對應HTTP1.x起始行中的Method - ':scheme'偽頭部
對應HTTP1.x起始行中HTTP Version,值為http或者https - ':authority'偽頭部
對應HTTP1.x頭部中的Host - ':path'偽頭部
對應HTTP1.x起始行中的URL,可以為*或/
2.4. 響應偽頭部
- ':status'偽頭部
對應HTTP1.x起始行中Status Code
2. 方法
- GET | 請求指定的頁面資訊,並返回實體主體
- HEAD | 與GET相同, 但僅返回狀態和頭部
- POST | 請求伺服器對內容進行處理
- PUT | 從客戶端向伺服器傳送的資料取代指定的文件的內容
- DELETE | 請求伺服器刪除指定的資源
- CONNECT | 要求用隧道協議連線代理(SSL/TLS)
- OPTIONS | 查詢針對請求URI指定資源支援的方法
- TRACE | 讓服務端將之前的請求通訊還給客戶端
詳情檢視[Web高階_Http方法詳解]
3. 頭部
- 一般頭: 同時適用於請求和響應訊息,但與最終訊息主體中傳輸的資料無關的訊息頭。
- 請求頭: 包含更多有關要獲取的資源或客戶端本身資訊的訊息頭。
- 響應頭: 包含有關響應的補充資訊,如其位置或伺服器本身(名稱和版本等)的訊息頭。
- 實體頭: 包含有關實體主體的更多資訊,比如主體長(Content-Length)度或其MIME型別。
詳情檢視[Web高階_Http頭部詳解]
4. 狀態碼
- 100-199 資訊響應
- 200-299 成功響應
- 300-399 重定向
- 400-499 客戶端響應
- 500-599 服務端響應
詳情檢視[Web高階_Http狀態碼詳解]
refs:
https://tools.ietf.org/html/rfc2616
https://tools.ietf.org/html/rfc7540
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status