日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

HTTP响应报文与工作原理详解

發(fā)布時(shí)間:2023/12/13 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTTP响应报文与工作原理详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

HTTP 是一種請(qǐng)求/響應(yīng)式的協(xié)議,即一個(gè)客戶端與服務(wù)器建立連接后,向服務(wù)器發(fā)送一個(gè)請(qǐng)求;服務(wù)器接到請(qǐng)求后,給予相應(yīng)的響應(yīng)信息。

超文本傳輸協(xié)議(Hypertext Transfer Protocol,簡(jiǎn)稱HTTP)是應(yīng)用層協(xié)議。HTTP 是一種請(qǐng)求/響應(yīng)式的協(xié)議,即一個(gè)客戶端與服務(wù)器建立連接后,向服務(wù)器發(fā)送一個(gè)請(qǐng)求;服務(wù)器接到請(qǐng)求后,給予相應(yīng)的響應(yīng)信息。

HTTP 請(qǐng)求報(bào)文

HTTP 請(qǐng)求報(bào)文由請(qǐng)求行、請(qǐng)求頭部、空行 和 請(qǐng)求包體 4 個(gè)部分組成,如下圖所示:

?

下面對(duì)請(qǐng)求報(bào)文格式進(jìn)行簡(jiǎn)單的分析:

請(qǐng)求行:請(qǐng)求行由方法字段、URL 字段 和HTTP 協(xié)議版本字段 3 個(gè)部分組成,他們之間使用空格隔開。常用的 HTTP 請(qǐng)求方法有 GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT;

?

● GET:當(dāng)客戶端要從服務(wù)器中讀取某個(gè)資源時(shí),使用GET 方法。GET 方法要求服務(wù)器將URL 定位的資源放在響應(yīng)報(bào)文的數(shù)據(jù)部分,回送給客戶端,即向服務(wù)器請(qǐng)求某個(gè)資源。使用GET 方法時(shí),請(qǐng)求參數(shù)和對(duì)應(yīng)的值附加在 URL 后面,利用一個(gè)問(wèn)號(hào)(“?”)代表URL 的結(jié)尾與請(qǐng)求參數(shù)的開始,傳遞參數(shù)長(zhǎng)度受限制。例如,/index.jsp?id=100&op=bind。

?

● POST:當(dāng)客戶端給服務(wù)器提供信息較多時(shí)可以使用POST 方法,POST 方法向服務(wù)器提交數(shù)據(jù),比如完成表單數(shù)據(jù)的提交,將數(shù)據(jù)提交給服務(wù)器處理。GET 一般用于獲取/查詢資源信息,POST 會(huì)附帶用戶數(shù)據(jù),一般用于更新資源信息。POST 方法將請(qǐng)求參數(shù)封裝在HTTP 請(qǐng)求數(shù)據(jù)中,以名稱/值的形式出現(xiàn),可以傳輸大量數(shù)據(jù);

?

請(qǐng)求頭部:請(qǐng)求頭部由關(guān)鍵字/值對(duì)組成,每行一對(duì),關(guān)鍵字和值用英文冒號(hào)“:”分隔。請(qǐng)求頭部通知服務(wù)器有關(guān)于客戶端請(qǐng)求的信息,典型的請(qǐng)求頭有:

空行:最后一個(gè)請(qǐng)求頭之后是一個(gè)空行,發(fā)送回車符和換行符,通知服務(wù)器以下不再有請(qǐng)求頭;

請(qǐng)求包體:請(qǐng)求包體不在 GET 方法中使用,而是在POST 方法中使用。POST 方法適用于需要客戶填寫表單的場(chǎng)合。與請(qǐng)求包體相關(guān)的最常使用的是包體類型 Content-Type 和包體長(zhǎng)度 Content-Length;

?

?

?

HTTP 響應(yīng)報(bào)文

HTTP 響應(yīng)報(bào)文由狀態(tài)行、響應(yīng)頭部、空行 和 響應(yīng)包體 4 個(gè)部分組成,如下圖所示:

下面對(duì)響應(yīng)報(bào)文格式進(jìn)行簡(jiǎn)單的分析:

狀態(tài)行:狀態(tài)行由 HTTP 協(xié)議版本字段、狀態(tài)碼和狀態(tài)碼的描述文本 3 個(gè)部分組成,他們之間使用空格隔開;

響應(yīng)頭部:響應(yīng)頭可能包括:

????Location:Location響應(yīng)報(bào)頭域用于重定向接受者到一個(gè)新的位置。例如:客戶端所請(qǐng)求的頁(yè)面已不存在原先的位置,為了讓客戶端重定向到這個(gè)頁(yè)面新的位置,服務(wù)器端可以發(fā)回Location響應(yīng)報(bào)頭后使用重定向語(yǔ)句,讓客戶端去訪問(wèn)新的域名所對(duì)應(yīng)的服務(wù)器上的資源;

?

????Server:Server 響應(yīng)報(bào)頭域包含了服務(wù)器用來(lái)處理請(qǐng)求的軟件信息及其版本。它和 User-Agent 請(qǐng)求報(bào)頭域是相對(duì)應(yīng)的,前者發(fā)送服務(wù)器端軟件的信息,后者發(fā)送客戶端軟件(瀏覽器)和操作系統(tǒng)的信息。

Vary:指示不可緩存的請(qǐng)求頭列表;

????Connection:連接方式;

????對(duì)于請(qǐng)求來(lái)說(shuō):close(告訴 WEB 服務(wù)器或者代理服務(wù)器,在完成本次請(qǐng)求的響應(yīng)后,斷開連接,不等待本次連接的后續(xù)請(qǐng)求了)。keepalive(告訴WEB服務(wù)器或者代理服務(wù)器,在完成本次請(qǐng)求的響應(yīng)后,保持連接,等待本次連接的后續(xù)請(qǐng)求);

????對(duì)于響應(yīng)來(lái)說(shuō):close(連接已經(jīng)關(guān)閉); keepalive(連接保持著,在等待本次連接的后續(xù)請(qǐng)求); Keep-Alive:如果瀏覽器請(qǐng)求保持連接,則該頭部表明希望WEB 服務(wù)器保持連接多長(zhǎng)時(shí)間(秒);例如:Keep-Alive:300;

????WWW-Authenticate:WWW-Authenticate響應(yīng)報(bào)頭域必須被包含在401 (未授權(quán)的)響應(yīng)消息中,這個(gè)報(bào)頭域和前面講到的Authorization 請(qǐng)求報(bào)頭域是相關(guān)的,當(dāng)客戶端收到 401 響應(yīng)消息,就要決定是否請(qǐng)求服務(wù)器對(duì)其進(jìn)行驗(yàn)證。如果要求服務(wù)器對(duì)其進(jìn)行驗(yàn)證,就可以發(fā)送一個(gè)包含了Authorization 報(bào)頭域的請(qǐng)求;

?

????`空行:最后一個(gè)響應(yīng)頭部之后是一個(gè)空行,發(fā)送回車符和換行符,通知服務(wù)器以下不再有響應(yīng)頭部。

響應(yīng)包體:服務(wù)器返回給客戶端的文本信息;

?

?

HTTP 工作原理

HTTP 協(xié)議采用請(qǐng)求/響應(yīng)模型。客戶端向服務(wù)器發(fā)送一個(gè)請(qǐng)求報(bào)文,服務(wù)器以一個(gè)狀態(tài)作為響應(yīng)。

以下是 HTTP 請(qǐng)求/響應(yīng)的步驟:

HTTP 無(wú)狀態(tài)性

????HTTP 協(xié)議是無(wú)狀態(tài)的(stateless)。也就是說(shuō),同一個(gè)客戶端第二次訪問(wèn)同一個(gè)服務(wù)器上的頁(yè)面時(shí),服務(wù)器無(wú)法知道這個(gè)客戶端曾經(jīng)訪問(wèn)過(guò),服務(wù)器也無(wú)法分辨不同的客戶端。HTTP 的無(wú)狀態(tài)特性簡(jiǎn)化了服務(wù)器的設(shè)計(jì),使服務(wù)器更容易支持大量并發(fā)的HTTP 請(qǐng)求。

?

HTTP 持久連接

????HTTP1.0 使用的是非持久連接,主要缺點(diǎn)是客戶端必須為每一個(gè)待請(qǐng)求的對(duì)象建立并維護(hù)一個(gè)新的連接,即每請(qǐng)求一個(gè)文檔就要有兩倍RTT 的開銷。因?yàn)橥粋€(gè)頁(yè)面可能存在多個(gè)對(duì)象,所以非持久連接可能使一個(gè)頁(yè)面的下載變得十分緩慢,而且這種短連接增加了網(wǎng)絡(luò)傳輸?shù)呢?fù)擔(dān)。HTTP1.1 使用持久連接keepalive,所謂持久連接,就是服務(wù)器在發(fā)送響應(yīng)后仍然在一段時(shí)間內(nèi)保持這條連接,允許在同一個(gè)連接中存在多次數(shù)據(jù)請(qǐng)求和響應(yīng),即在持久連接情況下,服務(wù)器在發(fā)送完響應(yīng)后并不關(guān)閉TCP 連接,而客戶端可以通過(guò)這個(gè)連接繼續(xù)請(qǐng)求其他對(duì)象。

HTTP/1.1 協(xié)議的持久連接有兩種方式:

● ????非流水線方式:客戶在收到前一個(gè)響應(yīng)后才能發(fā)出下一個(gè)請(qǐng)求;

● ????流水線方式:客戶在收到 HTTP 的響應(yīng)報(bào)文之前就能接著發(fā)送新的請(qǐng)求報(bào)文;

?

最后給出一個(gè)具體例子:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 Remote?Address:116.57.254.104:80??? Request?URL:http://hr.tencent.com/??? Request?Method:GET??? Status?Code:200?OK??? ???? Request?Headers??? GET?/?HTTP/1.1??? Host:?hr.tencent.com??? Connection:?keep-alive??? Accept:?text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8??? User-Agent:?Mozilla/5.0?(X11;?Linux?i686)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/35.0.1916.114?Safari/537.36??? Accept-Encoding:?gzip,deflate,sdch??? Accept-Language:?en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4??? Cookie:?pgv_pvi=2098703360;?PHPSESSID=bc7onl0dojbsatscsfv79pds77;?pgv_info=ssid=s1454606128;???? ????????pgv_pvid=926725350;?ts_uid=4084753309??? ???? Response?Header??? HTTP/1.1?200?OK??? Server:?nginx??? Date:?Mon,?26?Jan?2015?01:09:10?GMT??? Content-Type:?text/html;charset=utf-8??? Content-Length:?3631??? Connection:?keep-alive??? X-Powered-By:?PHP/5.3.10??? Expires:?Thu,?19?Nov?1981?08:52:00?GMT??? Cache-Control:?no-store,?no-cache,?must-revalidate,?post-check=0,?pre-check=0??? Pragma:?no-cache??? Vary:?Accept-Encoding??? Content-Encoding:?gzip

從請(qǐng)求報(bào)文可以知道:

1 GET?/?HTTP/1.1

??

請(qǐng)求方法 GET 表示一個(gè)讀取請(qǐng)求,將從服務(wù)器獲得網(wǎng)頁(yè)數(shù)據(jù),/表示URL 的路徑,URL 總是以/開頭,/就表示首頁(yè),最后的HTTP/1.1 指示采用的 HTTP 協(xié)議版本是 1.1;請(qǐng)求域名如下所示:

1 Host:?hr.tencent.com

?

響應(yīng)報(bào)文如下:

1 HTTP/1.1?200?OK???Server:?nginx

??

原文來(lái)自:http://network.51cto.com/art/201501/464513_1.htm

轉(zhuǎn)載于:https://www.cnblogs.com/othen/p/4284258.html

總結(jié)

以上是生活随笔為你收集整理的HTTP响应报文与工作原理详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。