亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 網絡協議 > 正文

逐步解讀HTTP報文的組成及含義

2020-02-18 10:52:12
字體:
來源:轉載
供稿:網友

如果說HTTP是因特網的信使,那么HTTP報文就是運送的包裹。所有的HTTP程序都是通過互相發送報文來完成工作的。本文將介紹HTTP報文的流動方式,報文的組成部分,請求和響應報文之間的區別等。

報文流
HTTP報文是在HTTP應用程序之間發送的數據塊,這些數據塊以文本形式存在,以描述了報文的內容及含義的元信息開頭,后面跟著可選的數據部分。這些報文在客戶端、服務器和代理之間流動。一般來說,報文流根據流向引用以下三種術語:報文流入(inbound)向服務器,工作完成之后,會流出(outbound)向客戶端或用戶Agent代理;不管是請求報文還是響應寶安溫,所有報文的接收者都在發送者的下游(downstream),報文只會向下游流動。

報文的組成部分
報文由起始行、首部,以及可選的包含數據的主體三個部分組成。所有的HTTP報文分為兩類:請求(request)報文和響應(response)報文,如下圖示例。前者會向Web服務器請求對資源進行一些操作,后者承載了狀態信息和操作產生的所有結果數據,把結果返回給客戶端。
HTTP,報文

起始行
所有的HTTP報文都以一個起始行作為開始。請求報文的起始行又稱為請求行,說明了要做些什么,響應報文的起始行又稱為響應行,說明了發生了什么。以下是兩種請求行的基本格式:
 

復制代碼
代碼如下:
// 請求行格式
<method> <request-URL> <version>
// 響應行格式
<version> <status> <reason-phrase>

請求行的方法描述了服務器應該執行的操作,請求URL描述了要對哪個資源執行這個方法,HTTP版本用來告知服務器,客戶端使用的是哪個版本的HTTP協議。響應行包含了報文使用的HTTP版本、數字狀態嗎,以及描述操作狀態的文本形式的原因短語。所有這些字段都由空格分隔。

 

請求行方法
HTTP規范中定義了一組常用的請求方法,用來告知服務器要做些什么,如下所示:
GET:從服務器獲取請求URL所指定的資源。
HEAD:只從服務器獲取文檔的首部。和GET方法的行為很類似,但服務器只返回首部,不包含主體。此方法可以:在不獲取資源的情況下了解資源的情況(比如判斷類型);通過查看響應中的狀態嗎,看看某個對象是否存在;通過查看首部,測試資源是否被修改了。
POST:向服務器發送需要處理的數據(包含主體)。通常用它來支持HTML的表單。
PUT:將請求的主體部分存儲在服務器上(包含主體)。有些系統允許用戶創建Web頁面或上傳文檔,該方法的語義就是讓服務器用請求的主體來創建一個由請求URL命名的新文檔,如果URL已存在則讓這個主體替代它。
DELETE:從服務器上刪除請求URL所指定的資源。但客戶端無法保證刪除操作一定被執行,因為HTTP規范允許服務器在不通知客戶端的情況下撤銷請求。
TRACE:對可能經過代理、網管、防火墻等服務器的報文進行追蹤,主要用于診斷。報文行程最后一站的服務器會彈回一條TRACE響應,在主體中攜帶它收到的原始請求報文,這樣客戶端就可以查看報文在一整條請求/響應鏈上是如何被修改的。
OPTIONS:查詢可以在服務器上執行哪些方法,讓客戶端不用實際訪問那些資源就能判定訪問各種資源的最優方式。
如果一臺服務器要與HTPP 1.1兼容,只要為其資源實現GET和HEAD方法即可,這兩種方法被認為是安全的,它們產生的請求不會在服務器上產生什么結果(實際上,這是由Web開發者決定的,完全可以使用GET方法來提交一個表單,但嚴重不建議這么做?。?/p>

HTTP還允許定義HTTP/1.1規范中沒有定義的擴展方法,這些方法為開發者提供了一種擴展HTTP服務能力的手段。很可能大部分HTTP應用程序都無法理解這些擴展方法,所以服務器最好對擴展方法寬容一些。

狀態碼與原因短語
每條響應報文都會包含一個3位數字和可讀的狀態,用來告訴客戶端,服務器發生了什么事情。數字狀態碼便于程序處理差錯,原因短語更便于人們理解。狀態碼分為5類(括號中為已定義范圍):100~199為信息提示(100~101);200~299為成功(200~206);300~399為重定向(300~305),用于告知客戶端使用替代位置來訪問資源;400~499為客戶端錯誤(400~415);500~599為服務器錯誤(500~505)。限于篇幅下面只介紹常見的狀態碼,詳情參見HTTP狀態碼維基百科

101 Switching Protocols:服務器正在根據客戶端的指定,將協議切換成Update首部所示的協議。
200 OK:服務器已成功處理了請求并提供了請求的網頁
204 No Content:服務器成功處理了請求,但沒有返回任何內容
301 Moved Permanently:請求的網頁已永久移動到新位置。響應的Location首部應包含資源現在所處的URL。
302 Found:與301類似,但這里的移除是臨時的。將來的請求仍應使用老的URL。
304 Not Modified:客戶的緩存資源是最新的,要客戶端使用緩存。
400 Bad Request:告知客戶端發送了一個錯誤的請求。
403 Forbidden:請求被服務器拒絕了。(可能是沒有訪問服務器的權限)
404 Not Found:服務器無法找到所請求的URL。
410 Gone:服務器曾經有這個資源,現在沒有了,與404類似。
500 Internal Server Error:服務器遇到一個錯誤,使其無法為請求提供服務。
502 Bad Gateway:作為代理或網關使用的服務器收到了上游的無效響應。
503 Service Unavailable:服務器現在無法為請求提供服務,但過一段時間就可以恢復服務。

首部
首部和方法配合工作,共同決定了客戶端和服務器能做什么事情。可以將首部分為5個主要類型,以下將分類列舉一些首部。

(1)通用首部:客戶端和服務器都可以使用的通用首部,提供了與報文相關的最基本的信息。
Connection:允許客戶端和服務器指定與請求/響應連接相關的選項
Date:日期和時間標志,說明報文是什么時刻創建的
MIME-Version:給出了發送端使用的MIME版本
Transfer-Encoding:告知接收端為了保證報文的可靠傳輸,對報文采用了什么編碼方式
Via:顯示了報文經過的中間節點(代理、網關等等)
Cache-Control:用于隨報文傳送緩存指示
Pragma:另一種隨報文傳送指示的方式,但并不專用于緩存

(2)請求首部:只在請求報文中有意義,用于說明是誰或什么在發送請求、請求源自何處,或客戶端的喜好及能力等。
Accept:告訴服務器能夠發送哪些媒體類型。該首部可以使連接的兩端都受益,客戶端會得到它們想要的內容,服務器則不會浪費時間好帶寬來發送客戶端無法使用的東西
Accept-Encoding:告訴服務器能夠發送哪些編碼方式
Accept-Language:告訴服務器能夠發送哪些語言
Referer:提供了包含當前請求URI的文檔的URL
User-Agent:告訴服務器發起請求的應用程序名稱
有時客戶端希望為請求加上某些限制,要求服務器在對請求進行響應之前,確保某個條件為真,則可以添加條件請求首部,如Expect(允許客戶端列出某請求所要求的服務器行為)、If-Match(若實體標記相匹配,則獲取這份文檔)、If-Modified-Since(除非在某個指定日期之后資源被修改過,否則限制該請求)等等。
HTTP本身就支持一種對請求進行質詢/響應的認證機制,這樣可以使事務稍微安全一些。因此有安全請求首部,如Authorization(客戶端提供給服務器的對其自身進行認證的數據)、Cookie(這個不是真正的安全首部,但卻是隱含了安全功能)。

(3)響應首部:為客戶端提供了一些額外信息,比如誰在發送響應、響應者的功能、其它一些特殊指令等
Age:(從最初創建開始)響應持續時間
Public:服務器為其資源支持的請求方法列表
Retry-After:如果資源不可用,在此時間重試
Accept-Ranges:(協商首部)對此資源來說,服務器可接受的范圍類型
Set-Cookie:(安全首部)類似Cookie,用于設置Cookie

(4)實體首部:用來描述HTTP報文的負荷,提供了有關實體及其內容的大量信息,可以告知報文的接收者它在對什么進行處理
Allow:列出可以對此實體執行的請求方法
Location:告知客戶端實體實際上位于何處,用于重定向資源
Content-Length:主體的長度
Content-Type:主體的對象類型
(還有很多關于主體的首部,如Content-Encoding、Content-Base、Content-MD5等等)
ETag:與此實體相關的實體標記(用于緩存,下同)
Expires:實體不再有效,要從源端再次獲取此實體的日期和時間
Last-Modified:這個實體最后一次被修改的日期和時間

HTTP請求報文實例解剖  
HTTP,報文

①是請求方法,GET和POST是最常見的HTTP方法,除此以外還包括DELETE、HEAD、OPTIONS、PUT、TRACE。不過,當前的大多數瀏覽器只支持GET和POST,Spring 3.0提供了一個HiddenHttpMethodFilter,允許你通過“_method”的表單參數指定這些特殊的HTTP方法(實際上還是通過POST提交表單)。服務端配置了HiddenHttpMethodFilter后,Spring會根據_method參數指定的值模擬出相應的HTTP方法,這樣,就可以使用這些HTTP方法對處理方法進行映射了。 
②為請求對應的URL地址,它和報文頭的Host屬性組成完整的請求URL,③是協議名稱及版本號。 
④是HTTP的報文頭,報文頭包含若干個屬性,格式為“屬性名:屬性值”,服務端據此獲取客戶端的信息。 
⑤是報文體,它將一個頁面表單中的組件值通過param1=value1&param2=value2的鍵值對形式編碼成一個格式化串,它承載多個請求參數的數據。不但報文體可以傳遞請求參數,請求URL也可以通過類似于“/chapter15/user.html? param1=value1&param2=value2”的方式傳遞請求參數。 
對照上面的請求報文,我們把它進一步分解,你可以看到一幅更詳細的結構圖: 
HTTP,報文


注:相關教程知識閱讀請移步到網絡協議頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人网在线免费看| 欧美国产精品日韩| 欧美视频专区一二在线观看| 亚洲美女视频网站| 国产亚洲精品一区二区| 成人黄色av播放免费| 成人黄色影片在线| 亚洲热线99精品视频| 亚洲男人天堂2019| 日韩免费电影在线观看| 久久韩剧网电视剧| 国产成人精品久久| 欧美精品一二区| 激情亚洲一区二区三区四区| 亚洲国产一区二区三区四区| 日韩女优在线播放| 成人亲热视频网站| 成人有码在线视频| 精品在线欧美视频| 一本色道久久88精品综合| 精品自拍视频在线观看| 久久精品视频在线播放| 欧美精品第一页在线播放| 精品福利在线观看| 狠狠躁夜夜躁人人躁婷婷91| 91精品国产自产91精品| 久久综合伊人77777| 国产精品一区二区av影院萌芽| 亚洲性69xxxbbb| 日韩在线免费观看视频| 国产精品视频男人的天堂| 欧美日韩亚洲精品一区二区三区| 亚洲国产精品久久久| 亚洲精品99久久久久中文字幕| 日韩在线观看免费网站| 97超级碰碰人国产在线观看| 亚洲国产天堂网精品网站| 九九精品在线视频| 亚洲高清免费观看高清完整版| 国内免费久久久久久久久久久| 欧美电影在线免费观看网站| 欧美大尺度在线观看| 视频一区视频二区国产精品| 97国产suv精品一区二区62| 亚洲电影免费观看| 亚洲第一福利网站| 欧美电影第一页| 日韩免费电影在线观看| 亚洲人成啪啪网站| 精品久久久91| 国产噜噜噜噜噜久久久久久久久| 国产精品成人国产乱一区| 91精品国产乱码久久久久久蜜臀| 欧美大荫蒂xxx| 亚洲色图综合网| 在线视频日韩精品| 国产亚洲精品激情久久| 国产精品入口免费视频一| 色天天综合狠狠色| 精品国偷自产在线视频99| 91精品国产自产在线| 久久视频免费在线播放| 久久久久久亚洲| 久久精品国产亚洲| 精品视频在线播放免| 欧美视频专区一二在线观看| 91精品在线国产| 久久综合久中文字幕青草| 97久久久久久| 亚洲国产高清高潮精品美女| 国产成人激情视频| 亚洲福利在线看| 在线看国产精品| 亚洲免费av片| 亚洲欧美日韩国产精品| 精品久久久国产| 欧美精品一区在线播放| 欧美日韩成人在线播放| 国产精品视频网| 中文字幕国内精品| 九九精品在线观看| 国产精品视频久久久| 91精品国产91久久久久| 国产成人av在线播放| 91亚洲一区精品| 亚洲精品色婷婷福利天堂| 久久久久久美女| 亚洲自拍偷拍色片视频| 色综合伊人色综合网站| 懂色aⅴ精品一区二区三区蜜月| 国产精品日韩久久久久| 中文字幕一区二区精品| 久久久久久成人| 国产99视频精品免视看7| 中文字幕亚洲欧美一区二区三区| 亚洲午夜未满十八勿入免费观看全集| 国产精品视频资源| 日韩av电影在线免费播放| 欧美另类极品videosbestfree| 国产精品中文字幕在线| 欧美极品少妇xxxxⅹ裸体艺术| 久久亚洲精品视频| 性色av一区二区三区红粉影视| 亚洲天堂网站在线观看视频| 91亚洲一区精品| 亚洲欧洲国产伦综合| 高清欧美一区二区三区| 国产欧美日韩丝袜精品一区| 欧美大片第1页| 成人情趣片在线观看免费| 国产午夜精品视频| 日韩视频永久免费观看| 久久精品99久久香蕉国产色戒| 国产成人免费av| 日本sm极度另类视频| 91精品在线播放| 欧美激情精品久久久久久久变态| 韩国三级日本三级少妇99| 亚洲激情视频在线| 日韩av在线网页| 亚洲欧美激情在线视频| 欧美激情xxxx性bbbb| 中文字幕欧美精品日韩中文字幕| 欧美亚洲午夜视频在线观看| 国产精品久久久久7777婷婷| 欧美成aaa人片在线观看蜜臀| 91在线精品播放| 欧美激情按摩在线| 久久久这里只有精品视频| 欧美精品在线极品| 中文字幕亚洲欧美日韩在线不卡| 亚洲欧美日韩图片| 91欧美视频网站| 国产精品国产三级国产aⅴ9色| 欧日韩在线观看| 国产综合在线看| 国产日韩欧美在线观看| 欧美日韩成人网| 欧美黄色片在线观看| 2019国产精品自在线拍国产不卡| 国产精品久久久久久网站| 国产成人精品日本亚洲| 亚洲精品短视频| 欧美一区二区.| 国产精品永久在线| 中日韩美女免费视频网址在线观看| 在线精品高清中文字幕| 午夜精品久久久久久久白皮肤| 久久精品电影网站| 欧美国产精品va在线观看| 成人两性免费视频| 2018中文字幕一区二区三区| 国内精品久久久久久中文字幕| 欧美日韩精品二区| 91成人福利在线| 欧美性受xxx| 在线观看国产精品淫| 亚洲色图校园春色| 亚洲日本成人网| 国产精品一区二区三区成人| 亚洲天堂网站在线观看视频| 日本午夜人人精品| 亚洲福利在线视频| 久久久久久久久久久久久久久久久久av|