HTTP請求報文和響應(yīng)報文
維基百科:HTTP
一個HTTP請求報文由請求行(request line)、請求頭部(header)、空行和請求數(shù)據(jù)4個部分組成。
大致結(jié)構(gòu)是這樣的:
一個簡單的例子:
請求行由三部分組成:請求方法,請求URL(不包括域名),HTTP協(xié)議版本
請求方法比較多:GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT
最常用的是GET和POST。
1) GET
傳遞參數(shù)長度受限制,因為傳遞的參數(shù)是直接表示在地址欄中,而特定瀏覽器和服務(wù)器對url的長度是有限制的。
因此,GET不適合用來傳遞私密數(shù)據(jù),也不適合拿來傳遞大量數(shù)據(jù)。
一般的HTTP請求大多都是GET。
2)POST
POST把傳遞的數(shù)據(jù)封裝在HTTP請求數(shù)據(jù)中,以名稱/值的形式出現(xiàn),可以傳輸大量數(shù)據(jù),對數(shù)據(jù)量沒有限制,也不會顯示在URL中。
表單的提交用的是POST。
3)HEAD
HEAD跟GET相似,不過服務(wù)端接收到HEAD請求時只返回響應(yīng)頭,不發(fā)送響應(yīng)內(nèi)容。所以,如果只需要查看某個頁面的狀態(tài)時,用HEAD更高效,因為省去了傳輸頁面內(nèi)容的時間。
4)DELETE
刪除某一個資源。
5)OPTIONS
用于獲取當(dāng)前URL所支持的方法。若請求成功,會在HTTP頭中包含一個名為“Allow”的頭,值是所支持的方法,如“GET, POST”。
6)PUT
把一個資源存放在指定的位置上。
本質(zhì)上來講, PUT和POST極為相似,都是向服務(wù)器發(fā)送數(shù)據(jù),但它們之間有一個重要區(qū)別,PUT通常指定了資源的存放位置,而POST則沒有,POST的數(shù)據(jù)存放位置由服務(wù)器自己決定。
關(guān)于POST和PUT的區(qū)別以及請求方法的冪等性,請參考文章: http的7種請求方法和冪等性
7)TRACE
回顯服務(wù)器收到的請求,主要用于測試或診斷。
8)CONNECT
CONNECT方法是HTTP/1.1協(xié)議預(yù)留的,能夠?qū)⑦B接改為管道方式的代理服務(wù)器。通常用于 SSL 加密服務(wù)器的鏈接與非加密的HTTP代理服務(wù)器的通信。
1)HTTP/1.0
HTTP/1.0支持:GET、POST、HEAD三種HTTP請求方法。
2)HTTP/1.1
HTTP/1.1是當(dāng)前正在使用的版本。該版本默認(rèn)采用持久連接,并能很好地配合代理服務(wù)器工作。還支持以管道方式同時發(fā)送多個請求,以便降低線路負(fù)載,提高傳輸速度。
HTTP/1.1新增了:OPTIONS、PUT、DELETE、TRACE、CONNECT五種HTTP請求方法。
請求頭部由關(guān)鍵字/值對組成,每行一對
常見的Content-Type:
multipart/form-data
用以支持向服務(wù)器發(fā)送二進制數(shù)據(jù),以便可以在 POST 請求中實現(xiàn)文件上傳等功能
現(xiàn)在用Postman向百度發(fā)送一個請求方式為 multipart/form-data 的POST包,請求報文是這樣的:
其中, boundary這個參數(shù)是分界線的意思,這個分界線參數(shù)具體是什么你可以隨意自定義 ,建議定義復(fù)雜一點,因為這樣子才不會跟請求體中其它字段重復(fù)。
上面的例子看出分界線=“--”+boundary
每個參數(shù)都由分界線分隔開,參數(shù)名(二進制數(shù)據(jù)還需要指明文件類型)和參數(shù)值之間有一行 空行 ,這個空行不能省略:
消息主體最后以 --boundary-- 標(biāo)示結(jié)束。
更加詳細的解釋可以參考: Multipart/form-data
請求頭之后是一個空行,通知服務(wù)器以下不再有請求頭
GET沒有請求數(shù)據(jù),POST有。
與請求數(shù)據(jù)相關(guān)的最常使用的請求頭是 Content-Type 和 Content-Length 。
HTTP響應(yīng)報文和請求報文的結(jié)構(gòu)差不多,也是由四個部分組成:
狀態(tài)行也由三部分組成:服務(wù)器HTTP協(xié)議版本,響應(yīng)狀態(tài)碼,狀態(tài)碼的文本描述
格式:HTTP-Version Status-Code Reason-Phrase CRLF
比如:HTTP/1.1 200 OK
狀態(tài)碼:由3位數(shù)字組成,第一個數(shù)字定義了響應(yīng)的類別
用304告訴緩存器資源沒有被修改,并且響應(yīng)體是空的,不會浪費帶寬。
HTTP請求報文和HTTP響應(yīng)報文
HTTP報文是面向文本的,報文中的每一個字段都是一些ASCII碼串,各個字段的長度是不確定的。HTTP有兩類報文:請求報文和響應(yīng)報文。 HTTP請求報文 一個HTTP請求報文由請求行(request line)、請求頭部(header)、空行和請求數(shù)據(jù)4個部分組成,下圖給出了請求報文的一般格式。 or <request-line> <headers> <blank line> [...
http協(xié)議中的報文是指的什么
HTTP協(xié)議中的報文分為請求報文和響應(yīng)報文兩種類型。請求報文主要由請求行、通用信息頭、請求頭、實體頭以及報文主體構(gòu)成。請求行以方法字段開始,后跟URL字段和HTTP協(xié)議版本字段,以CRLF結(jié)尾。CRLF序列中的CR和LF是必需的,其余部分可根據(jù)需求選擇是否包含。通用信息頭、請求頭和實體頭的具體內(nèi)容,請參考相關(guān)...
HTTP請求報文和響應(yīng)報文
與請求數(shù)據(jù)相關(guān)的最常使用的請求頭是 Content-Type 和 Content-Length 。HTTP響應(yīng)報文和請求報文的結(jié)構(gòu)差不多,也是由四個部分組成:狀態(tài)行也由三部分組成:服務(wù)器HTTP協(xié)議版本,響應(yīng)狀態(tài)碼,狀態(tài)碼的文本描述 格式:HTTP-Version Status-Code Reason-Phrase CRLF 比如:HTTP\/1.1 200 OK 狀態(tài)碼:由3位...
五千多字,圖文并茂詳解HTTP報文格式、請求響應(yīng)頭、cookie以及HTTPS加密...
請求報文由請求行、首部字段和實體內(nèi)容三部分組成。響應(yīng)報文由狀態(tài)行、響應(yīng)首部字段和實體內(nèi)容組成。狀態(tài)行包含HTTP協(xié)議版本、狀態(tài)碼和狀態(tài)描述。狀態(tài)碼分為五大類:2xx表示成功,3xx表示重定向,4xx表示客戶端錯誤,5xx表示服務(wù)器錯誤。首部字段包含通用、請求、響應(yīng)和實體報文首部,共47種。其中,cookies用...
HTTP 報文結(jié)構(gòu)
HTTP 報文有 請求報文 和 響應(yīng)報文 兩種。 請求報文 :從客戶向服務(wù)器發(fā)送請求報文。 響應(yīng)報文 :從服務(wù)端到客戶的回答。由于 HTTP 是 面向文本的 ,因此在報文中的每一個字段都是一些 ASCII 碼串,因此各個字段的長度是不確定的。 這也造成了 HTTP 報文結(jié)構(gòu)的統(tǒng)一性,不然無法解析...
HTTP請求\/響應(yīng)報文結(jié)構(gòu)
HTTP,全稱Hypertext Transfer Protocol,是互聯(lián)網(wǎng)通信的基礎(chǔ)。每一次你點擊鏈接,輸入表單數(shù)據(jù),或者從服務(wù)器獲取數(shù)據(jù),都在無形中與HTTP打交道。HTTP請求\/響應(yīng)報文,就像一場無聲的對話,包含了關(guān)鍵的信息和指令。請求報文的構(gòu)造 一個典型的HTTP請求報文由三個關(guān)鍵部分組成:請求行、請求頭部和數(shù)據(jù)。請求行...
HTTP 報文結(jié)構(gòu)詳解
請求報文結(jié)構(gòu)請求行包括協(xié)議版本、請求動作和資源路徑,如:“GET \/index.html HTTP\/1.1”。請求頭包含客戶端信息,如瀏覽器類型(User-Agent)和緩存策略(Cache-Control)。請求體可能包含特定數(shù)據(jù),如圖片或數(shù)據(jù)請求。響應(yīng)報文結(jié)構(gòu)響應(yīng)報文以狀態(tài)行開始,如:“HTTP\/1.1 200 OK”,接著是響應(yīng)頭,...
Http協(xié)議請求和響應(yīng)報文字段詳解
HTTP請求報文由3部分組成( 請求行+請求頭+請求體 ):下面是一個實際的請求報文:以這個報文為例:1.Post:代表請求寫協(xié)議,一般是get或post,區(qū)別:這個例子稍微復(fù)雜點。首先生成了一個 boundary 用于分割不同的字段,為了避免與正文內(nèi)容重復(fù),boundary 很長很復(fù)雜。然后 Content-Type 里指明了數(shù)據(jù)是...
HTTP 請求結(jié)構(gòu)及響應(yīng)報文學(xué)習(xí)記錄
本文的學(xué)習(xí)記錄主要參考以下兩篇文章。HTTP報文結(jié)構(gòu)涉及請求報文和響應(yīng)報文,全面解讀HTTP Cookie。HTTP 請求報文由請求行、請求頭部、空行和請求數(shù)據(jù)組成。請求頭部由請求方法字段、URL字段和HTTP協(xié)議版本組成,方法有GET、POST、PUT、DELETE、OPTIONS、TRACE和CONNECT等。GET方法用于獲取數(shù)據(jù),URL中攜帶請求參數(shù)...
HTTP響應(yīng)報文與工作原理詳解
HTTP的工作原理是客戶端與服務(wù)器建立TCP連接,發(fā)送請求報文,服務(wù)器解析請求、定位資源,并通過TCP連接返回響應(yīng)報文。在HTTP\/1.1中,通過持久連接(keepalive)支持多次請求和響應(yīng),提高了性能。HTTP是無狀態(tài)的協(xié)議,同一客戶端訪問同一服務(wù)器的頁面時,服務(wù)器無法識別客戶端,也不區(qū)分不同的客戶端。這簡化...
相關(guān)評說:
城固縣脫碳: ______ HTTP請求報文分為HTTP請求方法、請求URI、協(xié)議版本、HTTP首部字段和HTTP內(nèi)容主體(RFC2616文檔叫body). 其中HTTP請求方法、請求URI、協(xié)議版本位于同一行,它們仨之間用空格來分割,HTTP請求方法就是GET、POST、...
城固縣脫碳: ______ HTTP即超文本傳輸協(xié)議(HyperText Transfer Protocol),是一個簡單的請求-響應(yīng)協(xié)議. 在1990年,HTTP就成為WWW的支撐協(xié)議.當(dāng)時由其創(chuàng)始人WWW之父蒂姆·貝納斯·李(TimBemers—Lee)提出,隨后WWW聯(lián)盟成立,組織了IETE...
城固縣脫碳: ______ 如何使用SOCKET 發(fā)送HTTP1.1 GET POST請求包 HTTP報文是面向文本的,報文中的每一個字段都是一些ASCII碼串,各個字段的長度是不確定的.HTTP有兩類報文:請求報文和響應(yīng)報文. 請求報文 一個HTTP請求報文由請求行(request ...
城固縣脫碳: ______ 想查看HTTP請求和應(yīng)答報文,可以先了解一下TCP和HTTP協(xié)議:HTTP是第七層也就是應(yīng)用層協(xié)議,它是建立在TCP協(xié)議之上的,因此,抓包分析的話,HTTP交互都是從TCP三次握手開始的.以一次簡單的HTTP交互為例說明:客戶端-->syn--...
城固縣脫碳: ______ 為了使超文本的鏈接能夠高效率地完成,需要用 HTTP 協(xié)議來傳送一切必須的信息. 2.從層次的角度看,HTTP 是面向事務(wù)的(transaction-oriented)應(yīng)用層協(xié)議,它是萬維網(wǎng)上能夠可靠地交換文件(包括文本、聲音、圖像等各種多媒體文件)...
城固縣脫碳: ______ HTTP請求報文分為了請求行和首部行,請求行里注明了瀏覽器版本(version),在首部行里有瀏覽器類型(user-agent),因為不同的瀏覽器在返回同一個網(wǎng)頁請求時的html網(wǎng)頁可能不一樣,所以需要在報文里注明瀏覽器類型.
城固縣脫碳: ______ 據(jù)我說知啊:就是協(xié)助客戶端及服務(wù)端交易或者交流的的一些附屬信息