Http協議的格式及例項

2021-09-01 12:28:05 字數 4000 閱讀 4888

http協議位於網路五層結構的最上層應用層。它建立在tcp協議之上,是個無狀態的協議,典型的應用是網路瀏覽器以及移動端資料傳輸。本文將介紹http請求的格式,並對請求資料的各部分做乙個詳細介紹。

http協議包括多個方法:get,post,put,delete,head,patch,options等。我們重點關注最常用的get和post請求。

一次請求包括兩個過程,request過程和response過程,request過程發出資料請求,攜帶請求的各項引數,response過程返回請求的資料。

http request包括三部分:請求行,請求頭和請求體。

第一行是請求行,格式是:方法+路徑+http版本,以空格分隔。從第二行開始是請求頭,由若干個鍵值對構成,每個鍵值對一行。請求頭結束後空一行,接著是請求體。

post請求的引數放在請求體裡,get請求沒有請求體,請求的引數以鍵值對的形式存放在path裡面。請求頭里的鍵值對包括預定義鍵值對和自定義鍵值對,鍵值對內容包括請求的host,user-agent,編碼方式,請求體的型別,請求體的長度,分隔符等等資訊,大部分都是可選的,我們也可以隨意新增自定義的鍵值對來滿足某些需求。下面是乙個post請求的例項:

http response也包括三部分:響應狀態行,響應頭和響應體。

第一行是響應狀態行包括http版本+響應狀態,以空格分隔。從第二行開始是響應頭,包含若干個鍵值對,每個鍵值對佔一行。後面空一行,接著是響應體。

請求體可以包括多個part,通過header裡面的分隔符分隔,比如音訊上傳時利用請求體裡兩個part分布儲存檔案型別和音訊資料。

http request header裡有個user-agent欄位,是用來存放發起請求的客戶端或者瀏覽器的標識資訊的,比如瀏覽器的名稱版本,作業系統的名稱版本,客戶端的名稱版本等。

瀏覽器的user-agent:

mozilla/

5.0537.36

(khtml, like gecko) chrome/

52.0

.2743

.116 safari/

537.36

webview原始user-agent:

mozilla/

5.0(linux; u; android 4.2

.1534.30

(khtml, like gecko) version/

4.0 mobile safari/

534.30

我們自己在後面追加

chunyuyisheng/7.3.0 (iphone; ios 8.4; scale/2.00) ,注意第乙個有空格,方便隔開原始字串,以便伺服器正則判斷

最後生成類似 下面的字串:

mozilla/

5.0(linux;

u; android 4.2

.1534.30

(khtml, like

gecko) version/

4.0 mobile safari/

534.30 chunyuyisheng/

7.3.0

(iphone; ios 8.4

;scale/

2.00

)

user-agent就是乙個存放發起請求的端一些附加資訊的地方,至於具體寫入啥是由客戶端和伺服器協商決定的,沒有硬性標準。

cookie鍵值對儲存的是一些標誌使用者身份或設定的資訊,如session id,language等。使用者通過瀏覽器首次訪問某個**的時候,伺服器生成乙個cookie,並把它放在http響應的header裡面,下次再次訪問該**的時候,瀏覽器會在http請求的header裡面帶上這個cookie值,伺服器可以建立乙個cookie值到使用者表的對映,然後就可以利用這個識別使用者。

最基本的cookie:

==server -

> user agent ==

set-cookie: sid=

31d4d

96e407aad42

==user agent -

> server ==

cookie: sid=

31d4d

96e407aad42

指定cookie的path和domain屬性

==server -

> user agent ==

set-cookie: sid=

31d4d

96e407aad42; path=

/; domain=example.com

==user agent -

> server ==

cookie: sid=

31d4d

96e407aad42

包含多個cookie,乙個名字是sid,另乙個名字lang,名為sid的cookie指定了path,secure和httponly屬性;名為lang的cookie指定了path和domain屬性:

伺服器通過給名為lang的cookie指定乙個過去的時間來刪除該

cookie:

==server -

> user agent ==

set-cookie: lang=

; expires=sun,

06 nov 199408:

49:37 gmt

== user agent -

> server ==【客戶端發給伺服器的cookie不再包含lang】

cookie: sid=

31d4d

96e407aad42

third-party cookies

如果使用者訪問某個網頁,該網頁嵌入了三方廣告,開啟網頁的時候會向廣告服務區傳送請求,廣告伺服器返回的response裡會返回乙個cookie,下次使用者開啟其他網頁的時候,如果該網頁嵌入了同乙個第三方廣告平台,那請求廣告內容的request裡會自動把之前返回的cookie新增進去,從而能讓廣告伺服器識別出該使用者,根據之前瀏覽的內容給使用者推薦相應的廣告。這就是為什麼能給使用者展示之前訪問內容相關的廣告。

Http協議的格式及例項

http協議位於網路五層結構的最上層應用層。它建立在tcp協議之上,是個無狀態的協議,典型的應用是網路瀏覽器以及移動端資料傳輸。本文將介紹http請求的格式,並對請求資料的各部分做乙個詳細介紹。處於不同層次的網路協議 http協議包括多個方法 get,post,put,delete,head,pat...

HTTP協議格式及基礎

請求方法 uri 協議 版本 請求頭 request header 請求正文 http 請求 資料 例子舉例 請求的第一行是 方法url協議版本 以上 中 get 代表請求方法,sample.jsp 表示uri,http 1.1代表協議和協議的版本。根據http標準,http請求可以使用多種請求方法...

Http協議格式

一 請求報文 包括請求行 請求頭和請求資料,具體格式如下 請求方法 請求頭 accept 瀏覽器可接受的mime型別。accept charset 瀏覽器可接受的 字符集。accept language 瀏覽器所希望的語言種類,當伺服器能夠提供一種以上的語言版本時要用到。authorization ...