http請求和響應報文內容比較多,會分為大概四部分更新,最近比較忙,沒太多時間整理- -
首先來看看報文結構吧
1、http請求報文
http請求報文由方法、URI、http版本。http首部字段等構成
下面給大家示例一個訪問my_view_page.php的請求報文首部信息
GET /my_view_page.php HTTP/1.1
Host: 10.0.17.183:8000
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: http://10.0.17.183:8000/my_view_page.php
Accept-Encoding: gzip, deflate, sdch
關於報文的首部信息,稍微詳解
2、http響應報文
http響應報文由http版本、狀態碼(數字和原因短語)、http首部字段3部分組成
以下是剛才訪問my_view_page.php時服務器返回的響應報文首部信息:
HTTP/1.1 200 OK
Cache-Control: no-store, no-cache, must-revalidate
Date: Tue, 26 Jul 2016 09:32:11 GMT
Expires: Tue, 26 Jul 2016 09:32:12 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 3892
Content-Type: text/html; charset=utf-8
Last-Modified: Tue, 26 Jul 2016 09:32:12 GMT
報文中含有眾多的字段,其中又以http首部字段內容最豐富,其同時存在於請求和響應中,並涵蓋http報文相關的內容
3、http首部字段
定義:構成http報文的要素之一,在客戶端與服務器之間以http協議傳輸信息的過程中,起到傳遞額外重要信息的作用
3.1首部字段結構
首部字段名:字段值
例如:以Content-Type來表示報文主體的對象類型
Content-Type:text/html
另外,字段值對應的單個http首部字段可以有多個值,比如
Keep-Alive:timeout=15,max=100
3.2 4種http首部字段類型
http1.1規范了47種首部字段
3.2.1 通用首部字段
定義:請求和響應報文都會使用的首部
3.2.2 請求首部字段
從客戶端向服務器發送請求報文時使用的首部,補充了請求的附加內容、客戶端信息、相應內容相關優先級信息
3.2.3 響應首部字段
從服務器向客戶端返回響應報文時使用的首部。補充了資源內容更新時間等與實體有關的信息
3.2.4 實體首部字段
針對請求報文和響應報文的實體部分使用的首部,補充了資源內容更新時間與實體有關的信息
3.2.5 End-to-end首部和Hop-by-hop首部
http首部字段將定義成緩存代理和非緩存代理的行為,分成2種類型
端到端首部(End-to-end Header)
此類別中的首部會轉發給請求/響應對應的最終接受目標,而且必須保存在由緩存生成的響應中,另外規定它必須被轉發。
逐跳首部(Hop-by-hop Header)
此類別中的首部只對單次轉發有效,會因通過緩存或代理而不再轉發;http1.1和之后的版本,如要使用該首部,需提供Connection首部字段。
下面列舉下http/1.1中的逐跳首部字段,除了這8個,其他所有字段都屬於端到端首部。
Connection:
Keep-Alive
Proxy-Authenticate
Proxy-Authorization
Trailer
TE
Transfer-Encoding
Upgrade