HTTP請求報文解析

請求行(HTTP請求報文的第一行)

請求行由方法字段、URL字段和HTTP協議版本字段。其中,方法字段嚴格區分大小寫,當前HTTP協議中的方法都是大寫,方法字段如下介紹如下:

方法字段
①GET:請求獲取Request-URI(URI:通用資源標識符,URL是其子集,URI注重的是標識,而URL強調的是位置,可以將URL看成原始的URI),所標識的資源
②POST:在Request-URI所標識的資源後附加新的數據;支持HTML表單提交,表單中有用戶添入的數據,這些數據會發送到服務器端,由服務器存儲至某位置(例如發送處理程序)
③HEAD:請求Request-URI所標識的資源響應消息報頭,HEAD方法可以在響應時不返回消息體。
④PUT:與GET相反,請求服務器存儲一個資源,並用Request-URI做爲其標識;例如發佈系統
⑤DELETE:請求刪除URL指向的資源
⑥OPTIONS:請求查詢服務器的性能,或者查詢與資源相關的選項
⑦TRACE:跟蹤請求要經過的防火牆、代理或網關等,主要用於測試或診斷
⑧CONNECT保留將來使用

實例:

root@rosen:~# curl -I www.baidu.com
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: Keep-Alive
Content-Length: 277
Content-Type: text/html
Date: Mon, 12 Aug 2019 08:55:17 GMT
Etag: "575e1f6f-115"
Last-Modified: Mon, 13 Jun 2016 02:50:23 GMT
Pragma: no-cache
Server: bfe/1.0.8.18

實體首部:用於指定實體屬性

實體主體用於POST方法中。用戶向Web服務器提交表單數據的時候,需要使用POST方法,此時主體中包含用戶添寫在表單的各個屬性字段的值,當Web服務器收到POST方法的HTTP請求報文後,可以從實體中取出需要的屬性字段的值。

也就是說,當用戶通過Web瀏覽器向Web服務器發送請求時,Web瀏覽器會根據用戶的具體請求來選擇不同的HTTP請求方法,再將相應的URL和HTTP協議版本及相關的標頭填入頭部行中,若是POST方法,還會將相關的表單數據填入實體主體中,產生一個HTTP請求報文,然後將這個報文發送給Web服務器。

Location: 資源的新位置
Allow: 允許對此資源使用的請求方法

1、內容首部:
Content-Encoding:支持的編碼
Content-Language:支持的自然語言
Content-Length:文本長度
Content-Location:資源所在位置
Content-Range:在整個資源中此實體表示的字節範圍
Content-Type:主體的對象類型
2、緩存首部:
ETag: 實體標籤
Expires: 過期期限
Last-Modified: 上一次的修改時間

請求首部:

Host: 請求的主機名和端口號,虛擬主機環境下用於不同的虛擬主機
Referer:指明瞭請求當前資源的原始資源的URL
User-Agent: 用戶代理,使用什麼工具發出的請求

1、Accept首部:用戶標明客戶自己更傾向於支持的能力
Accept: 指明服務器能發送的媒體類型
Accept-Charset: 支持使用的字符集
Accept-Encoding: 支持使用的編碼方式
Accept-Language: 支持使用語言
2、條件請求首部:
Expect: 告訴服務器能夠發送來哪些媒體類型
If-Modified-Since: 是否在指定時間以來修改過此資源
If-None-Match:如果提供的實體標記與當前文檔的實體標記不符,就獲取此文檔
跟安全相關的請求首部:
Authorization: 客戶端提交給服務端的認證數據,如帳號和密碼
Cookie: 客戶端發送給服務器端身份標識

服務器類的錯誤;常遇到的狀態碼說明

在這裏插入圖片描述

響應首部(首部行):位於響應報文狀態行之後

Date標頭:消息產生的時間
Age標頭:(從最初創建開始)響應持續時間
Server標頭: 向客戶端標明服務器程序名稱和版本
ETage標頭:不透明驗證者
Location標頭:URL備用的位置
Content-Length標頭:實體的長度
Content-Tyep標頭:實體的媒體類型

協商首部:

Accept-Ranges: 對當前資源來講,服務器所能夠接受的範圍類型
Vary: 首部列表,服務器會根據列表中的內容挑選出最適合的版本發送給客戶端
跟安全相關的響應首部:
Set-Cookie: 服務器端在某客戶端第一次請求時發給令牌
WWW-Authentication: 質詢,即要求客戶提供帳號和密碼

響應首部一般包含如下內容:

實體:位於首部行之後
實體包含了Web客戶端請求的對象。Content-Length標頭及Content-Type標頭用於計算實體的位置、數據類型和數據長度。當Web服務器接收到Web客戶端的請求報文後,對HTTP請求報文進行解析,並將Web客戶端的請求的對象取出打包,通過HTTP響應報文將數據傳回給Web客戶端,如果出現錯誤則返回包含對應錯誤的錯誤代碼和錯誤原因的HTTP響應報文。

本文章源於:https://blog.csdn.net/wzx19840423/article/details/47811559

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章