http協議請求響應詳解

2022-10-11 12:00:18 字數 4468 閱讀 2968

http協議請求響應詳解

一、http協議簡介

http是hypertext transferprotocol(超文字傳輸協議)的簡寫,它是tcp/ip協議的乙個應用層協議,用於定義web瀏覽器與web伺服器之間交換資料的過程及資料本身的格式。

二、http1.0的基本執行方式

1、基於http協議的客戶/伺服器模式的資訊交換過程,如圖所示,

它分四個過程,建立連線、傳送請求資訊、傳送響應資訊、關閉連線。

2、瀏覽器與web伺服器的連線過程是短暫的,每次連線只處理乙個請求和響應。對每乙個頁面的訪問,瀏覽器與web伺服器都要建立一次單獨的連線。

3、瀏覽器到web伺服器之間的所有通訊都是完全獨立分開的請求和響應。

三、http1.1的特點

1、在乙個tcp連線上可以傳送多個http請求和響應。

2、多個請求和響應過程可以重疊

3、增加了更多的請求頭和響應頭,比如host、if-unmodified-since請求頭等

四、http請求訊息

1、客戶端連上伺服器後,向伺服器請求某個web資源,稱之為客戶端向伺服器傳送了乙個http請求。

2、乙個完整的http請求包括如下內容:

乙個請求行、若干訊息頭、以及請求正文,其中的一些訊息頭和正文都是可選的,訊息頭和正文內容之間要用空行隔開。

五、http響應訊息

1、乙個http響應代表伺服器向客戶端回送的資料。

2、乙個完整的http響應包括如下內容:

乙個狀態行、若干訊息頭、以及響應正文,其中的一些訊息頭和正文都是可選的,訊息頭和正文內容之間要用空行隔開。

六、http訊息頭(請求和響應都有)

1、   使用訊息頭,可以實現http客戶機與伺服器之間的條件請求和應答,訊息頭相當於伺服器和瀏覽器之間的一些暗號指令。

2、   每個訊息頭包含乙個頭欄位名稱,然後依次是冒號、空格、值、回車和換行符

a)        如: accept-encoding: gzip, deflate

3、   訊息頭欄位名是不區分大小寫的,但習慣上講每個單詞的第乙個字母大寫。

4、   整個訊息頭部分中的各行訊息頭可按任何順序排列。

5、   訊息頭又可分為通用資訊頭、請求頭、響應頭、實體頭等四類

6、   許多請求頭字段都允許客戶端在值部分指定多個可接受的選項,多個選項之間以逗號分隔。

7、   有些頭欄位可以出現多次,例如,響應訊息中可以包含有多個」warning」頭欄位。

七、http請求的細節

7.1 http請求行

1、   格式:請求方式資源路徑 http版本號

舉例:get/te***o116.shtml http/1.1

2、   請求方式:get、post、head、options、delete、trace、put

3、   使用者如沒有設定,預設情況下瀏覽器向伺服器傳送的都是get請求,例如在瀏覽器直接輸位址訪問,點超連結訪問等都是get,使用者如想把請求方式改為post,可通過更改表單的提交方式實現。

4、   不管post或get,都用於向伺服器請求某個web資源,這兩種方式的區別主要表現在資料傳遞上。

1)        get方式

2)        post方式

如請求方式為post方式,則可以在請求的正文內容中向伺服器傳送資料,post方式的特點:傳送的資料量無限制。

7.2 http請求頭

http請求頭簡介:請求頭欄位用於客戶端在請求訊息中向伺服器傳遞附加資訊,主要包括客戶端可以接受的資料型別、壓縮方法、語言以及發出請求的超連結所屬頁面的url位址等資訊。

1、  常用請求頭:

a)        accept:瀏覽器可接受的mime型別

b)        accept-charset: 瀏覽器通過這個頭告訴伺服器,它支援哪種字符集

c)        accept-encoding:瀏覽器能夠進行解碼的資料編碼方式,比如gzip

d)        accept-language:瀏覽器所希望的語言種類,當伺服器能夠提供一種以上的語言版本時要用到。可以在瀏覽器中進行設定。

e)        host:初始url中的主機和埠

f)         referer:包含乙個url,使用者從該url代表的頁面出發訪問當前請求的頁面

g)        content-type:內容型別

h)        if-modified-since: wed, 02 feb2011 12:04:56 gmt利用這個頭與伺服器的檔案進行比對,如果一致,則從快取中直接讀取檔案。

i)          user-agent:瀏覽器型別.

j)          content-length:表示請求訊息正文的長度

k)        connection:表示是否需要持久連線。如果伺服器看到這裡的值為「keep -alive」,或者看到請求使用的是http 1.1(http 1.1預設進行持久連線

l)          cookie:這是最重要的請求頭資訊之一

m)      date:date: mon,22 aug 2011 01:55:39 gmt請求時間gmt

7.3 http響應 -- 狀態行

http版本號 狀態碼 原因敘述注:回車換行符

狀態碼用於表示伺服器對請求的各種不同處理結果和狀態,它是乙個三位的十進位制數。響應狀態碼分為5類,使用最高位為1到5來進行分類如下所示:

狀態碼

含義

100~199

表示成功接收請求,要求客戶端繼續提交下一次請求才能完成整個處理過程

200~299

表示成功接收請求並已完成整個處理過程

300~399

為完成請求,客戶需進一步細化請求。例如,請求的資源已經移動乙個新位址

400~499

客戶端的請求有錯誤

500~599

伺服器端出現錯誤

1、 http相應狀態行—常用狀態碼

1)        200(正常)

a)        表示一切正常,返回的是正常請求結果

2)        302/307(臨時重定向)

a)        指出被請求的文件已被臨時移動到別處,此文件的新的url在location響應頭中給出。

3)        304(未修改)

a)        表示客戶機快取的版本是最新的,客戶機可以繼續使用它,無需到伺服器請求。

4)        404(找不到)

a)        伺服器上不存在客戶機所請求的資源。

5)        500(伺服器內部錯誤)

a)        伺服器端的程式發生錯誤

2、http--響應頭

響應頭欄位用於向客戶端傳遞附加資訊

1)      常用響應頭

a)      location:指示新的資源的位置

b)      server:apache tomcat指示伺服器的型別

c)      content-encoding: gzip伺服器傳送的資料採用的編碼型別

d)      content-length: 80 告訴瀏覽器正文的長度

e)      content-language: zh-cn服務傳送的文字的語言

f)       content-type: text/html;charset=gb2312伺服器傳送的內容的mime型別

g)      last-modified: tue, 11 jul 200018:23:51 gmt檔案的最後修改時間

h)      refresh:1;url=指示客戶端重新整理頻率。單位是秒

j)        set-cookie:ss=q0=5lb_nq;path=/search伺服器端傳送的cookie

k)expires: -1

l)cache-control: no-cache (1.1) 

m)pragma: no-cache   (1.0)

expires,cache-control,pragma 配合使使用者使瀏覽器不快取網頁

n)      connection:close/keep-alive  

o)      date: tue, 11 jul 2000 18:23:51gmt

HTTP協議 請求與響應

1 簡介 2 http請求與響應 2.1 http請求 方法 get請求獲取由 request uri 所表示的資源 post 在 request uri 所標識的資源後附加新的資料 head 請求獲取由 request uri 所標識的資源的響應訊息報頭 put請求伺服器儲存乙個資源,並用 req...

HTTP協議 請求 響應結構分析

引言正文 請求結構示例 響應結構 響應結構示例 有彩蛋哦 之前介紹了springmvc接收到乙個請求之後,是如何分發,處理的。今天用瀏覽器的開發工具,無意間點開了http的請求結構,發現這一部分的知識竟然是空白的,趕緊補充一下 請求結構分為,請求行,訊息報頭,請求正文 以方法符號開頭 空格分隔 後面...

HTTP協議請求頭和響應頭

http請求和相應的內容 http請求包括 1 請求行 請求的http方法 url http的版本號 2 請求頭 3 請求體 key value http響應包括 1 狀態行 http協議的版本 狀態碼 描述 2 響應頭 3 響應體 web伺服器把要傳送給客戶端的文件資訊放在響應體 http請求頭 ...