- Java Web應(yīng)用開(kāi)發(fā)
- 曹慧 艾迪主編
- 5307字
- 2025-02-07 17:52:38
1.2 HTTP
HTTP是一個(gè)應(yīng)用層協(xié)議,主要用于實(shí)現(xiàn)萬(wàn)維網(wǎng)上的各種連接,它使用傳輸控制協(xié)議(TCP, Transmission Control Protocol)連接進(jìn)行可靠的數(shù)據(jù)傳送。本節(jié)將對(duì)HTTP進(jìn)行簡(jiǎn)要的介紹,使讀者理解Web開(kāi)發(fā)所要解決的基本問(wèn)題。
【提出問(wèn)題】
怎樣標(biāo)識(shí)分布在整個(gè)因特網(wǎng)上的資源?客戶端發(fā)出的請(qǐng)求包含哪些信息?服務(wù)器又會(huì)返回什么響應(yīng)信息?
【知識(shí)儲(chǔ)備】
1.2.1 HTTP概述
超文本傳輸協(xié)議(HTTP,Hyper Text Transfer Protocol)定義了瀏覽器向服務(wù)器請(qǐng)求文檔、服務(wù)器將文檔傳送給瀏覽器的通信規(guī)則。HTTP 允許將超文本標(biāo)記語(yǔ)言(HTML,Hyper Text Markup Language)文檔從服務(wù)器端傳送到客戶端,是萬(wàn)維網(wǎng)上能夠可靠地交換文件(包括文本、聲音、圖像等各種多媒體文件)的重要基礎(chǔ)。
HTTP主要由請(qǐng)求和響應(yīng)構(gòu)成,如圖1-2所示。客戶端在和服務(wù)器建立連接后可以發(fā)起請(qǐng)求,請(qǐng)求通常會(huì)包含請(qǐng)求方式和資源路徑,每種請(qǐng)求方式都規(guī)定了客戶端與服務(wù)器聯(lián)系的具體形式。服務(wù)器接收到請(qǐng)求后會(huì)做出響應(yīng),可以根據(jù)請(qǐng)求找到相應(yīng)的資源進(jìn)行處理:若為靜態(tài)資源,則直接將資源的內(nèi)容發(fā)送給客戶端;若為動(dòng)態(tài)內(nèi)容和程序,則進(jìn)行執(zhí)行,把處理后的結(jié)果以HTML的形式發(fā)送給客戶端。

圖1-2 HTTP的請(qǐng)求-響應(yīng)模型
本書(shū)中使用的是HTTP 1.1版本。
提示
HTTP與TCP/IP
TCP/IP(傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議)是不同的通信協(xié)議的大集合,瀏覽器和服務(wù)器均使用其來(lái)連接因特網(wǎng)。TCP/IP自下而上將整個(gè)通信網(wǎng)絡(luò)的功能分成7層。
HTTP是基于TCP/IP的應(yīng)用層協(xié)議,它的實(shí)現(xiàn)建立在下層協(xié)議的服務(wù)之上。
HTTP的請(qǐng)求/響應(yīng)過(guò)程如圖1-3所示。

圖1-3 HTTP請(qǐng)求/響應(yīng)過(guò)程
(1)客戶端連接到Web服務(wù)器
一個(gè)HTTP客戶端通常是網(wǎng)頁(yè)瀏覽器,可以與Web服務(wù)器的HTTP端口(默認(rèn)為80)建立一個(gè)TCP連接。
(2)通過(guò)建立起的連接向服務(wù)器發(fā)送HTTP請(qǐng)求
通過(guò)TCP連接,客戶端向Web服務(wù)器發(fā)送一個(gè)文本的請(qǐng)求報(bào)文,請(qǐng)求獲取某個(gè)Web頁(yè)面。
(3)服務(wù)器接收請(qǐng)求并返回HTTP響應(yīng)
Web服務(wù)器解析請(qǐng)求,定位請(qǐng)求資源,將資源復(fù)本通過(guò)該連接發(fā)送給客戶端。
(4)客戶端解析HTML內(nèi)容
客戶端解析返回的響應(yīng)報(bào)文。首先解析狀態(tài)行,通過(guò)狀態(tài)碼查看請(qǐng)求是否成功。然后解析響應(yīng)消息頭,響應(yīng)消息頭包含服務(wù)器名稱、頁(yè)面資源的內(nèi)容長(zhǎng)度等信息。最后讀取響應(yīng)數(shù)據(jù),根據(jù)HTML的語(yǔ)法對(duì)其進(jìn)行格式化,在瀏覽器窗口中顯示資源頁(yè)面。
(5)釋放TCP連接,通信的雙方斷開(kāi)所建立的連接
在傳輸若干個(gè)請(qǐng)求/響應(yīng)后,當(dāng)客戶端發(fā)出關(guān)閉連接的請(qǐng)求時(shí),TCP連接關(guān)閉。
1.2.2 URL格式
如何根據(jù)客戶端的請(qǐng)求找到對(duì)應(yīng)的資源或程序?這是服務(wù)器開(kāi)發(fā)首先要解決的問(wèn)題。在萬(wàn)維網(wǎng)上,每一個(gè)資源都有統(tǒng)一且唯一的地址,即我們常說(shuō)的網(wǎng)頁(yè)地址,這個(gè)地址就是統(tǒng)一資源定位符(URL,Uniform Resource Locator)。
URL主要由3個(gè)部分組成:資源類型、存放資源的主機(jī)域名和資源存放路徑,如圖1-4所示。

圖1-4 URL格式與組成
URL的語(yǔ)法格式如下。
schema://host[:port#]/path/.../[?query-string][#anchor]
(1)schema:指定使用的協(xié)議,如HTTP、HTTPS、FTP。
(2)host:服務(wù)器的lP地址或者域名,如www.ptpress.com.cn。
(3)port:與服務(wù)器通信的端口,如果省略 port,則使用協(xié)議的默認(rèn)端口。例如,HTTP 默認(rèn)的端口號(hào)是80,如果使用了其他的端口,則必須指明。
(4)path:訪問(wèn)資源的路徑,是由0、1或由多個(gè)“/”符號(hào)隔開(kāi)的字符串組成,一般用來(lái)表示主機(jī)上的一個(gè)目錄或文件地址。如果省略path,則文檔必須位于網(wǎng)站的根目錄中。
(5)query-string(查詢字符串):可選,是發(fā)送給HTTP服務(wù)器的數(shù)據(jù),用于給動(dòng)態(tài)網(wǎng)頁(yè)傳遞參數(shù)。
(6)anchor(錨):頁(yè)內(nèi)顯示的錨點(diǎn)。例如,如果一個(gè)網(wǎng)頁(yè)中有多個(gè)名詞解釋,可使用 anchor直接定位到某一名詞解釋。
下面是一個(gè)完整的URL地址示例。
https://www.ptpress.com.cn/shopping/index
1.2.3 HTTP報(bào)文格式
HTTP報(bào)文是客戶端和服務(wù)器相互通信時(shí)發(fā)送的數(shù)據(jù)塊。
HTTP報(bào)文有兩類。
(1)請(qǐng)求報(bào)文:從客戶端向服務(wù)器發(fā)送請(qǐng)求的報(bào)文。
(2)響應(yīng)報(bào)文:從服務(wù)器向客戶端回答請(qǐng)求的報(bào)文。
下面通過(guò)圖1-5來(lái)了解客戶端和服務(wù)器在相互通信時(shí)對(duì)HTTP報(bào)文的處理過(guò)程。

圖1-5 HTTP請(qǐng)求/響應(yīng)報(bào)文
首先客戶端向服務(wù)器發(fā)送 HTTP 請(qǐng)求報(bào)文,請(qǐng)求報(bào)文(第一部分)的第一行說(shuō)明了請(qǐng)求方式(GET)、使用的通信協(xié)議(HTTP)和版本號(hào)(1.1),這是HTTP請(qǐng)求行。其余部分采用鍵/值對(duì)的形式發(fā)送,包含了URL等信息,我們稱之為請(qǐng)求頭。
服務(wù)器在接收到信息后,根據(jù)URL找到圖片文件,并將其發(fā)送給客戶端。HTTP響應(yīng)報(bào)文(第二部分)的第一行說(shuō)明了采用的是協(xié)議HTTP、版本號(hào)為1.1;“200 OK”表示本次請(qǐng)求正常處理,這是 HTTP 響應(yīng)狀態(tài)行;其余部分稱為響應(yīng)頭,服務(wù)器可以在這部分向客戶端傳遞附加信息,例如,Content-Type用來(lái)說(shuō)明資源的類型,Content-Length用來(lái)指明資源的長(zhǎng)度。
第三部分內(nèi)容是響應(yīng)體,這里服務(wù)器向客戶端響應(yīng)的是一張圖片。客戶端在接收到響應(yīng)報(bào)文后,將響應(yīng)體的內(nèi)容呈現(xiàn)給用戶。
通過(guò)以上過(guò)程的描述可以發(fā)現(xiàn),HTTP請(qǐng)求報(bào)文主要由請(qǐng)求行、請(qǐng)求頭和請(qǐng)求體組成,如圖1-6所示。

圖1-6 HTTP請(qǐng)求報(bào)文的組成
(1)請(qǐng)求行。位于請(qǐng)求報(bào)文的第一行,對(duì)報(bào)文進(jìn)行描述,由請(qǐng)求方法、資源路徑和協(xié)議版本組成。請(qǐng)求方法包括GET、POST等,它告訴服務(wù)器要執(zhí)行怎樣的操作。資源路徑是指服務(wù)器根目錄下的相對(duì)目錄。
(2)請(qǐng)求頭。由鍵/值對(duì)組成,每行一對(duì),鍵和值用冒號(hào)“:”(英文)分隔,可以有多行鍵/值對(duì),也可以不使用。請(qǐng)求頭用于向服務(wù)器傳遞附加信息,如請(qǐng)求正文的長(zhǎng)度、瀏覽器的類型等。
(3)請(qǐng)求體。包含請(qǐng)求數(shù)據(jù)。若采用GET方式,則沒(méi)有請(qǐng)求體;若采用POST方式,則包含請(qǐng)求體。POST方式常用于需要客戶填寫(xiě)表單的場(chǎng)合,用戶數(shù)據(jù)將作為請(qǐng)求體發(fā)送給服務(wù)器。
HTTP響應(yīng)報(bào)文主要由狀態(tài)行、響應(yīng)頭和響應(yīng)體組成。
(1)狀態(tài)行。位于響應(yīng)報(bào)文的第一行,由 HTTP 版本號(hào)、狀態(tài)碼和狀態(tài)消息組成。狀態(tài)碼反映了服務(wù)器對(duì)客戶端請(qǐng)求的響應(yīng)狀態(tài),可以表示請(qǐng)求是否被理解、滿足。狀態(tài)碼由3位數(shù)字組成,其中首位數(shù)字規(guī)定了響應(yīng)狀態(tài)的類別。表1-1列舉了5種響應(yīng)狀態(tài)的類別及狀態(tài)碼首位取值規(guī)則。
表1-1 狀態(tài)碼及響應(yīng)狀態(tài)的類別

其中比較常見(jiàn)的幾個(gè)狀態(tài)碼的含義如下。
① 200(成功):表示客戶端的請(qǐng)求成功,請(qǐng)求所希望的響應(yīng)頭、數(shù)據(jù)體將在本響應(yīng)消息中返回。
② 301(永久移動(dòng)):指出請(qǐng)求的資源已經(jīng)被移動(dòng)到新的URL,響應(yīng)信息會(huì)包含新的URL,客戶端會(huì)自動(dòng)定向到新的URL。
③ 404(找不到):服務(wù)器無(wú)法找到客戶端請(qǐng)求的資源。
④ 500(服務(wù)器內(nèi)部錯(cuò)誤):服務(wù)器遇到錯(cuò)誤,無(wú)法處理請(qǐng)求。
(2)響應(yīng)頭。與請(qǐng)求頭類似,是一個(gè)鍵/值對(duì)的列表,為響應(yīng)報(bào)文添加一些附加信息。例如,被請(qǐng)求資源需要的認(rèn)證方式、頁(yè)面資源的最后修改時(shí)間等。
(3)響應(yīng)體。服務(wù)器返回給客戶端的文件、數(shù)據(jù)等。如果客戶端請(qǐng)求的是網(wǎng)頁(yè),那么響應(yīng)體就是HTML代碼。
1.2.4 HTTP請(qǐng)求方法
HTTP請(qǐng)求方法規(guī)定了客戶端操作服務(wù)器資源的方式,這有點(diǎn)兒像快遞系統(tǒng),如果要給遠(yuǎn)方的朋友送個(gè)禮物,我們可以選擇順豐、中通、郵政特快專遞或者其他快遞服務(wù)來(lái)完成這個(gè)工作。
1.常見(jiàn)的請(qǐng)求方法
HTTP發(fā)送請(qǐng)求時(shí)同樣可以選擇不同的請(qǐng)求方法,目前HTTP 1.1版本支持8種請(qǐng)求方法,如表1-2所示。
表1-2 HTTP請(qǐng)求方法

(1)GET方法
GET 方法是最常用的請(qǐng)求方法,通常用于請(qǐng)求服務(wù)器發(fā)送某個(gè)資源。當(dāng)用戶在瀏覽器地址欄中直接輸入某個(gè)URL或單擊網(wǎng)頁(yè)上的一個(gè)超鏈接時(shí),瀏覽器將采用GET方法發(fā)送請(qǐng)求。
GET 請(qǐng)求方法的特點(diǎn)是沒(méi)有請(qǐng)求體。用戶的請(qǐng)求參數(shù)將通過(guò) URL 查詢字符串進(jìn)行傳遞。例如,在網(wǎng)頁(yè) https://www.ptpress.com.cn/的搜索欄中輸入“愛(ài)國(guó)”,然后進(jìn)行搜索,彈出頁(yè)面的URL如下。
https://www.ptpress.com.cn/search?keyword=愛(ài)國(guó)&jc=
該地址中“?”后面的內(nèi)容是參數(shù)信息,是由參數(shù)名和參數(shù)值組成的,中間使用“=”連接。如果有多個(gè)參數(shù),那么參數(shù)之間使用“&”分隔。
(2)POST方法
POST 方法最初是用來(lái)向服務(wù)器輸入數(shù)據(jù)的,通常用來(lái)向指定資源提交數(shù)據(jù)以處理請(qǐng)求,如提交表單數(shù)據(jù)、上傳文件等。數(shù)據(jù)被包含在請(qǐng)求體中。POST 請(qǐng)求方法可能會(huì)導(dǎo)致新的資源的建立和/或已有資源的修改。
下面通過(guò)圖1-7描述的某次用戶登錄操作來(lái)進(jìn)一步了解POST請(qǐng)求過(guò)程。

圖1-7 采用POST方法發(fā)送請(qǐng)求
首先通過(guò)Form表單輸入用戶名和密碼,然后單擊“提交”按鈕,向服務(wù)器發(fā)送請(qǐng)求,輸入的數(shù)據(jù)就會(huì)通過(guò)請(qǐng)求體的內(nèi)容發(fā)送到服務(wù)器。在請(qǐng)求頭中,Content-Type指定了請(qǐng)求體的內(nèi)容為Form表單,同時(shí)將Form表單中的信息(un=admin&pw=123)封裝在請(qǐng)求體中。這樣服務(wù)器就可以獲取該請(qǐng)求,并進(jìn)行相應(yīng)的處理,最后將處理后的結(jié)果以HTML的形式回送給瀏覽器。
一般來(lái)說(shuō),我們會(huì)使用GET方法來(lái)完成單純的數(shù)據(jù)獲取,而涉及提交數(shù)據(jù)方面的請(qǐng)求都使用POST方法來(lái)完成,因?yàn)镻OST方法傳遞的參數(shù)是隱藏在請(qǐng)求體中發(fā)送的,用戶是看不到的,而GET方法的參數(shù)信息都會(huì)在URL欄明文顯示。
(3)HEAD方法
HEAD方法與GET方法類似,但服務(wù)器在響應(yīng)中只返回響應(yīng)頭信息,不會(huì)返回響應(yīng)體內(nèi)容,如圖1-8所示。這就允許客戶端在未獲取實(shí)際資源的情況下通過(guò)對(duì)響應(yīng)頭信息進(jìn)行檢查,從而判斷該請(qǐng)求資源的狀態(tài)。也就是說(shuō),使用HEAD方法,可以在不獲取資源的前提下,通過(guò)查看響應(yīng)中的狀態(tài)碼來(lái)檢查資源是否存在,或測(cè)試資源是否被修改。通常,該方法在Web應(yīng)用開(kāi)發(fā)中使用較少。

圖1-8 采用HEAD方法發(fā)送請(qǐng)求
(4)PUT方法
與GET 方法從服務(wù)器讀取文檔相反,PUT 方法會(huì)向服務(wù)器寫(xiě)入文檔,從客戶端向服務(wù)器傳送的數(shù)據(jù)將取代指定的文檔的內(nèi)容。有些發(fā)布系統(tǒng)允許用戶創(chuàng)建Web頁(yè)面,并使用PUT方法直接將其安裝到服務(wù)器上。
(5)DELETE方法
DELETE方法的作用是通過(guò)URL刪除指定的資源,具體請(qǐng)求過(guò)程為:瀏覽器通過(guò)DELETE方法通知服務(wù)器刪除指定的資源,服務(wù)器接受請(qǐng)求后將文件刪除,然后對(duì)客戶端進(jìn)行響應(yīng)。但是一般情況下服務(wù)器不會(huì)執(zhí)行真正的刪除操作,而是為資源做一個(gè)刪除標(biāo)記。
(6)TRACE方法
客戶端發(fā)起的請(qǐng)求可能要穿過(guò)防火墻、代理、網(wǎng)關(guān)或其他一些應(yīng)用程序,每個(gè)中間節(jié)點(diǎn)都可能修改原始的HTTP請(qǐng)求。TRACE方法允許客戶端在請(qǐng)求最終發(fā)送給服務(wù)器時(shí),查看它的變化,具體請(qǐng)求過(guò)程為:TRACE請(qǐng)求在目標(biāo)服務(wù)器端發(fā)起一個(gè)“回環(huán)”診斷,最后一站的服務(wù)器會(huì)彈回一條 TRACE 響應(yīng),并在響應(yīng)主體中攜帶它收到的原始請(qǐng)求報(bào)文。這樣客戶端就可以查看在所有中間HTTP應(yīng)用程序組成的請(qǐng)求/響應(yīng)鏈上原始報(bào)文是否以及如何被毀壞或修改。
(7)OPTlONS方法
OPTlONS方法會(huì)請(qǐng)求Web服務(wù)器告知瀏覽器其所支持的請(qǐng)求方法。返回服務(wù)器針對(duì)特定資源所支持的HTTP請(qǐng)求方法,也可以使用“*”向服務(wù)器詢問(wèn)它所支持的可用于所有資源的HTTP請(qǐng)求方法。
(8)CONNECT方法
CONNECT方法是HTTP 1.1協(xié)議預(yù)留的方法,當(dāng)服務(wù)器為客戶端和另一臺(tái)遠(yuǎn)程服務(wù)器建立一條特殊的連接隧道時(shí),Web服務(wù)器在中間充當(dāng)了代理的角色。CONNECT方法通常用于安全套接層(SSL,Secure Sockets Layer)加密服務(wù)器的連接與非加密的HTTP代理服務(wù)器的通信。
2.請(qǐng)求重定向
有時(shí)我們會(huì)遇到這樣一種情況,輸入網(wǎng)址訪問(wèn)一個(gè)網(wǎng)站,網(wǎng)頁(yè)在打開(kāi)的過(guò)程中URL自動(dòng)改變了,雖然最終仍然可以訪問(wèn)網(wǎng)站,但是地址欄中的地址已經(jīng)不是最初輸入的地址了,這種情況是發(fā)生了請(qǐng)求重定向,具體過(guò)程為:客戶端向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器接收該請(qǐng)求后返回包含需要重新訪問(wèn)的URL的響應(yīng)消息,客戶端再使用收到的新的URL發(fā)送第二次請(qǐng)求,最終訪問(wèn)到目標(biāo)資源。這個(gè)過(guò)程就好比我們找甲廣告公司設(shè)計(jì)名片,甲公司明確說(shuō)明他們不會(huì)設(shè)計(jì),并向我們推薦乙公司,最終我們找到乙公司設(shè)計(jì)好了名片。所以我們會(huì)對(duì)外宣稱是乙公司設(shè)計(jì)的名片。
在請(qǐng)求重定向的過(guò)程中:
(1)客戶端發(fā)出了兩次請(qǐng)求;
(2)地址欄會(huì)發(fā)生改變;
(3)客戶端清楚服務(wù)器地址改變的事實(shí)。
請(qǐng)求重定向一般是同時(shí)使用響應(yīng)頭和狀態(tài)碼實(shí)現(xiàn)的。瀏覽器向服務(wù)器發(fā)送GET請(qǐng)求,服務(wù)器接收該請(qǐng)求后向?yàn)g覽器發(fā)送301代碼,同時(shí)通過(guò)響應(yīng)頭中的location指定下一次要跳轉(zhuǎn)的地址,瀏覽器接收到響應(yīng)后查看到狀態(tài)碼為301,知道需要進(jìn)一步細(xì)化請(qǐng)求,因此會(huì)向location 所指定的地址再一次發(fā)出請(qǐng)求,服務(wù)器繼續(xù)對(duì)該請(qǐng)求進(jìn)行處理,最終打開(kāi)所需頁(yè)面。
1.2.5 HTTP會(huì)話管理
回顧 HTTP 請(qǐng)求-響應(yīng)的過(guò)程可以發(fā)現(xiàn),服務(wù)器會(huì)對(duì)客戶端的每次請(qǐng)求進(jìn)行響應(yīng),但是并沒(méi)有保存過(guò)程中產(chǎn)生的請(qǐng)求、響應(yīng)數(shù)據(jù),這意味著HTTP不會(huì)為了下次請(qǐng)求的需要而保存本次請(qǐng)求過(guò)程中傳輸?shù)臄?shù)據(jù)。這就帶來(lái)一個(gè)問(wèn)題,當(dāng)有多個(gè)用戶同時(shí)訪問(wèn)服務(wù)器時(shí),服務(wù)器如何區(qū)分他們呢?例如,用戶甲和用戶乙同時(shí)瀏覽一個(gè)購(gòu)物網(wǎng)站,用戶甲想要購(gòu)買一箱牛奶,用戶乙想要購(gòu)買一部手機(jī),當(dāng)他們進(jìn)行商品結(jié)算時(shí),服務(wù)器需要知道發(fā)起請(qǐng)求的用戶的身份才能區(qū)分他們分別購(gòu)買的是哪件商品。
為了識(shí)別不同的用戶及為同一個(gè)用戶提供持久的服務(wù),服務(wù)器通常需要對(duì)用戶的狀態(tài)進(jìn)行跟蹤,這就需要用到會(huì)話技術(shù)。以日常生活中打電話為例,從撥通電話開(kāi)始到掛斷電話之間發(fā)生的一連串的你問(wèn)我答的完整過(guò)程就是一次會(huì)話。再比如,王女士去某商場(chǎng)購(gòu)物,從她進(jìn)入商場(chǎng)開(kāi)始,其間可能有過(guò)咨詢商品詳細(xì)信息、試衣服、將某商品買下來(lái)等多種行為,直到最后王女士走出商場(chǎng)為止,這一過(guò)程也可以稱為一次會(huì)話。
在Web開(kāi)發(fā)中,會(huì)話是指客戶端和服務(wù)器在一段時(shí)間內(nèi)發(fā)生的一系列請(qǐng)求和響應(yīng)過(guò)程。例如,某用戶登錄一個(gè)論壇并發(fā)帖的整個(gè)過(guò)程、某用戶在一個(gè)電子商務(wù)網(wǎng)站購(gòu)物的完整過(guò)程,都是一個(gè)會(huì)話。
在會(huì)話技術(shù)中,主要使用Cookie和Session對(duì)象保存會(huì)話數(shù)據(jù)。Cookie對(duì)象將會(huì)話數(shù)據(jù)保存在客戶端,這些會(huì)話數(shù)據(jù)用于服務(wù)器識(shí)別用戶身份。Session對(duì)象將會(huì)話數(shù)據(jù)保存在服務(wù)器端,以在服務(wù)器上記錄與用戶對(duì)應(yīng)的信息。
Cookie對(duì)象保存會(huì)話數(shù)據(jù)的實(shí)現(xiàn)機(jī)制如圖 1-9 所示。當(dāng)客戶端第一次向服務(wù)器發(fā)出請(qǐng)求時(shí),服務(wù)器發(fā)現(xiàn)用戶沒(méi)有帶來(lái)用于會(huì)話的Cookie,響應(yīng)時(shí)就會(huì)在HTTP響應(yīng)頭中增加字段Set-cookie,其中包含信息,如id=“34294”??蛻舳藭?huì)把Cookie保存到本地,當(dāng)用戶再次向該服務(wù)器發(fā)送請(qǐng)求時(shí),瀏覽器就會(huì)在請(qǐng)求頭中將Cookie信息一同發(fā)送給服務(wù)器,如id=“34294”。通過(guò)這種方式,服務(wù)器就可以識(shí)別用戶的身份,跟蹤用戶在該網(wǎng)站上的活動(dòng),并為該用戶提供持久的服務(wù)。

圖1-9 Cookie對(duì)象保存會(huì)話數(shù)據(jù)的實(shí)現(xiàn)機(jī)制
【梳理回顧】
本節(jié)介紹了HTTP的主要內(nèi)容和Web開(kāi)發(fā)需要解決的基本問(wèn)題,其中HTTP報(bào)文格式、請(qǐng)求方法是學(xué)習(xí)的重點(diǎn)。
- What's New in TensorFlow 2.0
- Cocos2d-x游戲開(kāi)發(fā):手把手教你Lua語(yǔ)言的編程方法
- Android Application Development Cookbook(Second Edition)
- C語(yǔ)言程序設(shè)計(jì)
- Apache Spark 2.x for Java Developers
- Learning JavaScript Data Structures and Algorithms
- 西門子S7-200 SMART PLC編程從入門到實(shí)踐
- Test-Driven JavaScript Development
- 計(jì)算機(jī)應(yīng)用基礎(chǔ)教程(Windows 7+Office 2010)
- Arduino Wearable Projects
- 分布式數(shù)據(jù)庫(kù)原理、架構(gòu)與實(shí)踐
- Mudbox 2013 Cookbook
- 數(shù)字媒體技術(shù)概論
- 小學(xué)生C++趣味編程從入門到精通
- Docker on Windows