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請求頭 ...