理解HTTP協(xié)議(轉(zhuǎn))

來(lái)自:Pickle - 博客園

作者:Pickle

鏈接:www.cnblogs.com/wxisme/p/6212797.html(點(diǎn)擊尾部閱讀原文前往)


在互聯(lián)網(wǎng)時(shí)代HTTP協(xié)議的重要性無(wú)需多言樟凄,對(duì)于技術(shù)崗位的同學(xué)們來(lái)說(shuō)理解掌握HTTP協(xié)議是必須的襟交。本篇博客就從HTTP協(xié)議的演進(jìn)新啼、特性、重要知識(shí)點(diǎn)和工作中常見(jiàn)問(wèn)題的總結(jié)等方面進(jìn)行簡(jiǎn)單的介紹范咨。理解掌握了這些點(diǎn)工作中就OK了故觅,當(dāng)然在面試中也是少不了的,如果能結(jié)合實(shí)踐掌握這篇博客的80%應(yīng)對(duì)一般的面試應(yīng)該是夠了渠啊。如果要深入學(xué)習(xí)HTTP協(xié)議的細(xì)節(jié)請(qǐng)看那本經(jīng)典的《HTTP權(quán)威指南》输吏。

一、HTTP協(xié)議的演進(jìn)

HTTP(HyperText?Transfer?Protocol)協(xié)議是基于TCP的應(yīng)用層協(xié)議替蛉,它不關(guān)心數(shù)據(jù)傳輸?shù)募?xì)節(jié)戴尸,主要是用來(lái)規(guī)定客戶端和服務(wù)端的數(shù)據(jù)傳輸格式灭贷,最初是用來(lái)向客戶端傳輸HTML頁(yè)面的內(nèi)容。默認(rèn)端口是80。

1计济、HTTP 0.9版本 1991年

這個(gè)版本就是最初用來(lái)向客戶端傳輸HTML頁(yè)面的,所以只有一個(gè)GET命令谒府,然后服務(wù)器返回客戶端一個(gè)HTML頁(yè)面割粮,不能是其他格式。利用這個(gè)版本完全可以構(gòu)建一個(gè)簡(jiǎn)單的靜態(tài)網(wǎng)站了怎静。

2邮弹、HTTP 1.0版本 1996年

1.0版本是改變比較大的,奠定了現(xiàn)在HTTP協(xié)議的基礎(chǔ)蚓聘。這個(gè)版本的協(xié)議不僅可以傳輸HTML的文本頁(yè)面腌乡,還可以傳輸其他二進(jìn)制文件,例如圖片夜牡、視頻与纽。而且還增加了現(xiàn)在常用的POST和HEAD命令。請(qǐng)求消息和響應(yīng)消息也不是單一的了塘装,規(guī)定了一些元數(shù)據(jù)字段急迂。例如字符集、編碼蹦肴、狀態(tài)響應(yīng)碼等僚碎。

3、HTTP 1.1版本 1997年

實(shí)際上是在1.0版本之后半年時(shí)間又發(fā)布了一個(gè)版本阴幌,這個(gè)版本在1.0版本的基礎(chǔ)上更加完善了勺阐。這個(gè)版本增加了持久連接,就是說(shuō)之前版本的協(xié)議一次請(qǐng)求就是一次TCP連接矛双,請(qǐng)求完成后這個(gè)連接就關(guān)閉掉了渊抽。眾所周知TCP協(xié)議是可靠的,建立連接需要3次握手议忽,斷開(kāi)連接需要4次揮手腰吟,并且TCP有流量控制和擁塞控制,有慢開(kāi)始機(jī)制徙瓶,剛建立連接時(shí)傳輸比較慢毛雇,這是比較耗費(fèi)資源的。一個(gè)豐富的頁(yè)面會(huì)有許多圖片侦镇、表單和超鏈接灵疮。這樣的話就會(huì)有多次的HTTP請(qǐng)求,所以在這個(gè)版本上默認(rèn)不關(guān)閉TCP連接也不用聲明Connection: keep-alive字段壳繁。如果確實(shí)要關(guān)閉可以指定Connection: close字段震捣。還引入了管道機(jī)制荔棉,就是說(shuō)在一個(gè)TCP連接里可以同時(shí)發(fā)送多個(gè)HTTP請(qǐng)求,而不必等待上一個(gè)請(qǐng)求響應(yīng)成功再發(fā)送蒿赢。還增加了PUT润樱、PATCH、HEAD羡棵、 OPTIONS壹若、DELETE等命令,豐富了客戶端和服務(wù)端交互動(dòng)作皂冰。還增加了Host字段店展。

4、HTTP 2版本 2015年

這個(gè)版本也是隨著互聯(lián)網(wǎng)的發(fā)展秃流,有了新的需求制定了新的功能還有對(duì)上一個(gè)版本的完善赂蕴。1.1版本有了管道機(jī)制,但是正在服務(wù)端還是要對(duì)請(qǐng)求進(jìn)行排隊(duì)處理舶胀。這個(gè)版本可以多工的處理概说。還有了頭信息壓縮和服務(wù)器的主動(dòng)推送。

5嚣伐、HTTPS

HTTPS是HTTP協(xié)議的安全版本席怪,HTTP協(xié)議的數(shù)據(jù)傳輸是明文的,是不安全的纤控,HTTPS使用了SSL/TLS協(xié)議進(jìn)行了加密處理挂捻。

關(guān)于HTTP協(xié)議歷史演進(jìn)的詳細(xì)介紹請(qǐng)參考:http://www.ruanyifeng.com/blog/2016/08/http.html

下面介紹沒(méi)有特殊說(shuō)明默認(rèn)HTTP/1.1版本

二、HTTP協(xié)議的特點(diǎn)

1船万、HTTP協(xié)議是無(wú)狀態(tài)的

就是說(shuō)每次HTTP請(qǐng)求都是獨(dú)立的刻撒,任何兩個(gè)請(qǐng)求之間沒(méi)有什么必然的聯(lián)系。但是在實(shí)際應(yīng)用當(dāng)中并不是完全這樣的耿导,引入了Cookie和Session機(jī)制來(lái)關(guān)聯(lián)請(qǐng)求声怔。

2、多次HTTP請(qǐng)求

在客戶端請(qǐng)求網(wǎng)頁(yè)時(shí)多數(shù)情況下并不是一次請(qǐng)求就能成功的舱呻,服務(wù)端首先是響應(yīng)HTML頁(yè)面醋火,然后瀏覽器收到響應(yīng)之后發(fā)現(xiàn)HTML頁(yè)面還引用了其他的資源,例如箱吕,CSS芥驳,JS文件,圖片等等茬高,還會(huì)自動(dòng)發(fā)送HTTP請(qǐng)求這些需要的資源≌籽現(xiàn)在的HTTP版本支持管道機(jī)制,可以同時(shí)請(qǐng)求和響應(yīng)多個(gè)請(qǐng)求怎栽,大大提高了效率丽猬。

3宿饱、基于TCP協(xié)議

HTTP協(xié)議目的是規(guī)定客戶端和服務(wù)端數(shù)據(jù)傳輸?shù)母袷胶蛿?shù)據(jù)交互行為,并不負(fù)責(zé)數(shù)據(jù)傳輸?shù)募?xì)節(jié)脚祟。底層是基于TCP實(shí)現(xiàn)的∶裕現(xiàn)在使用的版本當(dāng)中是默認(rèn)持久連接的,也就是多次HTTP請(qǐng)求使用一個(gè)TCP連接由桌。

三为黎、HTTP報(bào)文

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

舉例:

GET /wxisme HTTP/1.1Host: www.cnblogs.com ?? User-Agent: Mozilla/5.0(Windows; U; Windows NT5.0; zh-CN; rv:1.8.1) Gecko/20061010Firefox/2.0Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

Accept-Language: en-us,zh-cn;q=0.7,zh;q=0.3

Accept-Encoding: gzip,deflate

Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7

Keep-Alive: 300

Proxy-Connection: keep-alive

Cookie: ASP.NET_SessionId=ey5drq45lsomio55hoydzc45

Cache-Control: max-age=0

簡(jiǎn)單來(lái)說(shuō)請(qǐng)求報(bào)文就是由請(qǐng)求行沥寥、請(qǐng)求頭、內(nèi)容實(shí)體組成的柠座,注意邑雅,每一行的末尾都有回車(chē)和換行,在內(nèi)容實(shí)體和請(qǐng)求頭之間另有一個(gè)空行妈经。其中請(qǐng)求行指定的是請(qǐng)求方法淮野、請(qǐng)求URL、協(xié)議版本吹泡;請(qǐng)求頭是鍵值對(duì)的形式存在的骤星,就是字段名:值;內(nèi)容實(shí)體就是要傳輸?shù)臄?shù)據(jù)爆哑。稍后會(huì)對(duì)方法洞难、請(qǐng)求頭字段做詳細(xì)的說(shuō)明。

2揭朝、響應(yīng)報(bào)文

舉例:

HTTP/1.1200OKDate: Tue,12Jul201621:36:12GMTContent-Length:563Content-Type: text/html

Hello http!

簡(jiǎn)單來(lái)說(shuō)響應(yīng)報(bào)文由狀態(tài)行队贱、響應(yīng)首部字段(響應(yīng)頭)、響應(yīng)實(shí)體組成潭袱,其中第一行是狀態(tài)行柱嫌,依次包含HTTP版本,狀態(tài)碼和狀態(tài)短語(yǔ)組成屯换;在一個(gè)回車(chē)換行之后是響應(yīng)頭编丘,也是鍵值對(duì)的形式,字段名:值彤悔;然后會(huì)有一個(gè)空行也包含回車(chē)換行嘉抓,之后是響應(yīng)實(shí)體,就是要傳輸?shù)臄?shù)據(jù)晕窑。在上面的例子當(dāng)中就是一個(gè)非常簡(jiǎn)單的HTML頁(yè)面掌眠。對(duì)于響應(yīng)狀態(tài)碼,首部字段鍵值對(duì)稍后會(huì)有更加詳細(xì)的說(shuō)明幕屹。

四蓝丙、HTTP請(qǐng)求方法

請(qǐng)求方法是客戶端用來(lái)告知服務(wù)器其動(dòng)作意圖的方法级遭。就像下達(dá)命令一樣。在HTTP1.1版本中支持GET渺尘、POST等近10種方法挫鸽。需要注意的是方法名區(qū)分大小寫(xiě),需要用大寫(xiě)字母鸥跟。下面詳細(xì)說(shuō)明丢郊。

1、GET:獲取資源

GET方法用來(lái)請(qǐng)求訪問(wèn)已被URI識(shí)別的資源医咨。也就是指定了服務(wù)器處理請(qǐng)求之后響應(yīng)的內(nèi)容枫匾。

2、POST:傳輸實(shí)體主體

POST方法用來(lái)傳輸實(shí)體主體拟淮。POST與GET的區(qū)別之一就是目的不同干茉,二者之間的區(qū)別會(huì)在文章的最后詳細(xì)說(shuō)明。雖然GET方法也可以傳輸很泊,但是一般不用角虫,因?yàn)镚ET的目的是獲取,POST的目的是傳輸委造。

3戳鹅、PUT:傳輸文件

PUT方法用來(lái)傳輸文件。類(lèi)似FTP協(xié)議昏兆,文件內(nèi)容包含在請(qǐng)求報(bào)文的實(shí)體中枫虏,然后請(qǐng)求保存到URL指定的服務(wù)器位置。

4爬虱、HEAD:獲得報(bào)文首部

HEAD方法類(lèi)似GET方法模软,但是不同的是HEAD方法不要求返回?cái)?shù)據(jù)。用于確認(rèn)URI的有效性及資源更新時(shí)間等饮潦。

5燃异、DELETE:刪除文件

DELETE方法用來(lái)刪除文件,是與PUT相反的方法继蜡。DELETE是要求返回URL指定的資源回俐。

6、OPTIONS:詢問(wèn)支持的方法

因?yàn)椴⒉皇撬械姆?wù)器都支持規(guī)定的方法稀并,為了安全有些服務(wù)器可能會(huì)禁止掉一些方法例如DELETE仅颇、PUT等。那么OPTIONS就是用來(lái)詢問(wèn)服務(wù)器支持的方法碘举。

7忘瓦、TRACE:追蹤路徑

TRACE方法是讓W(xué)eb服務(wù)器將之前的請(qǐng)求通信環(huán)回給客戶端的方法。這個(gè)方法并不常用引颈。

8耕皮、CONNECT:要求用隧道協(xié)議連接代理

CONNECT方法要求在與代理服務(wù)器通信時(shí)建立隧道境蜕,實(shí)現(xiàn)用隧道協(xié)議進(jìn)行TCP通信。主要使用SSL/TLS協(xié)議對(duì)通信內(nèi)容加密后傳輸凌停。

匯總:

五粱年、HTTP的響應(yīng)狀態(tài)碼

狀態(tài)碼是用來(lái)告知客戶端服務(wù)器端處理請(qǐng)求的結(jié)果。憑借狀態(tài)碼用戶可以知道服務(wù)器是請(qǐng)求處理成功罚拟、失敗或者是被轉(zhuǎn)發(fā)台诗;這樣出現(xiàn)了錯(cuò)誤也好定位。狀態(tài)碼是由3位數(shù)字加原因短語(yǔ)組成赐俗。3位數(shù)字中的第一位是用來(lái)指定狀態(tài)的類(lèi)別拉队。共有5種。

HTTP狀態(tài)碼一共有60多種阻逮,但是不用全部都記住粱快,因?yàn)榇蟛糠衷诠ぷ鳟?dāng)中是不經(jīng)常使用的。經(jīng)常使用的大概就是16種夺鲜,下面來(lái)詳細(xì)介紹皆尔。(其實(shí)最最常用的也就8種呐舔,下面有背景色的就是)

1币励、200:OK

這個(gè)沒(méi)有什么好說(shuō)的,是代表請(qǐng)求被正常的處理成功了珊拼。

2食呻、 204:No Content

請(qǐng)求處理成功,但是沒(méi)有數(shù)據(jù)實(shí)體返回澎现,也不允許有實(shí)體返回仅胞。比如說(shuō)HEAD請(qǐng)求,可能就會(huì)返回204 No Content剑辫,因?yàn)镠EAD就是只獲取頭信息干旧。這里簡(jiǎn)單提一下205 Reset Content,和204 No Content的區(qū)別是不但沒(méi)有數(shù)據(jù)實(shí)體返回妹蔽,而且還需要重置表單椎眯,方便用戶再次輸入。

3胳岂、206:Partial Content

這是客戶端使用Content-Range指定了需要的實(shí)體數(shù)據(jù)的范圍编整,然后服務(wù)端處理請(qǐng)求成功之后返回用戶需要的這一部分?jǐn)?shù)據(jù)而不是全部,執(zhí)行的請(qǐng)求就是GET乳丰。返回碼就是206:Partial Content掌测。

4、301 : Moved Permanently

代表永久性定向产园。該狀態(tài)碼表示請(qǐng)求的資源已經(jīng)被分配了新的URL汞斧,以后應(yīng)該使用資源現(xiàn)在指定的URL夜郁。也就是說(shuō)如果已經(jīng)把資源對(duì)應(yīng)的URL保存為書(shū)簽了,這是應(yīng)該按照Location首部字段提示的URL重新保存断箫。

5拂酣、302:Found

代表臨時(shí)重定向。該狀態(tài)碼表示請(qǐng)求的資源已經(jīng)被分配了新的URL仲义,但是和301的區(qū)別是302代表的不是永久性的移動(dòng)婶熬,只是臨時(shí)的。就是說(shuō)這個(gè)URL還可能會(huì)發(fā)生改變埃撵。如果保存成書(shū)簽了也不會(huì)更新赵颅。

6、303:See Other

和302的區(qū)別是303明確規(guī)定客戶端應(yīng)當(dāng)使用GET方法暂刘。

7饺谬、304:Not Modified

該狀態(tài)碼表示客戶端發(fā)送附帶條件請(qǐng)求時(shí),服務(wù)器端允許請(qǐng)求訪問(wèn)資源谣拣,但是沒(méi)有滿足條件募寨。304狀態(tài)碼返回時(shí)不包含任何數(shù)據(jù)實(shí)體。304雖然被劃分在3XX中但是和重定向沒(méi)有關(guān)系森缠。

8拔鹰、307:Temporary Redirect

臨時(shí)重定向,與302 Found相同贵涵,但是302會(huì)把POST改成GET列肢,而307就不會(huì)。

9宾茂、400:Bad Request

400表示請(qǐng)求報(bào)文中存在語(yǔ)法錯(cuò)誤瓷马。需要修改后再次發(fā)送。

10跨晴、401:Unauthorized

該狀態(tài)碼表示發(fā)送的請(qǐng)求需要有通過(guò)HTTP認(rèn)證的認(rèn)證信息欧聘。

11、403:Forbidden

表明請(qǐng)求訪問(wèn)的資源被拒絕了端盆。沒(méi)有獲得服務(wù)器的訪問(wèn)權(quán)限怀骤,IP被禁止等。

12爱谁、404:Not Found

表明請(qǐng)求的資源在服務(wù)器上找不到晒喷。當(dāng)然也可以在服務(wù)器拒絕請(qǐng)求且不想說(shuō)明理由時(shí)使用。

13访敌、408:Request Timeout

表示客戶端請(qǐng)求超時(shí)凉敲,就是在客戶端和服務(wù)器建立連接后服務(wù)器在一定時(shí)間內(nèi)沒(méi)有收到客戶端的請(qǐng)求。

14、500:Internal Server Error

表明服務(wù)器端在執(zhí)行請(qǐng)求時(shí)發(fā)生了錯(cuò)誤爷抓,很有可能是服務(wù)端程序的Bug或者臨時(shí)故障势决。

15、503:Service Unavailable

表明服務(wù)器暫時(shí)處于超負(fù)載或正在進(jìn)行停機(jī)維護(hù)蓝撇,現(xiàn)在無(wú)法處理請(qǐng)求果复。如果事先得知解除以上狀況需要的時(shí)間,最好寫(xiě)入Retry-After字段再返回給客戶端渤昌。

16虽抄、504:Getaway Timeout

網(wǎng)關(guān)超時(shí),是代理服務(wù)器等待應(yīng)用服務(wù)器響應(yīng)時(shí)的超時(shí)独柑,和408 Request Timeout的卻別就是504是服務(wù)器的原因而不是客戶端的原因

更加詳細(xì)的狀態(tài)碼請(qǐng)參考:http://tool.oschina.net/commons?type=5

六迈窟、HTTP的首部字段

HTTP首部字段是構(gòu)成HTTP報(bào)文最重要的元素之一。在客戶端與服務(wù)端之前進(jìn)行信息傳遞的時(shí)候請(qǐng)求和響應(yīng)都會(huì)使用首部字段忌栅,會(huì)傳遞一些重要的元信息车酣。首部字段是以鍵值對(duì)的形式存在的。包含報(bào)文的主體大小索绪、語(yǔ)言湖员、認(rèn)證信息等。HTTP首部字段包含4種類(lèi)型:

通用首部字段(General Header Fields)

代表請(qǐng)求報(bào)文和響應(yīng)報(bào)文都會(huì)使用的字段

請(qǐng)求首部字段(Request Header Fields)

是客戶端向服務(wù)端發(fā)送請(qǐng)求時(shí)使用的首部字段瑞驱。包含請(qǐng)求的附加內(nèi)容娘摔、客戶端信息、響應(yīng)內(nèi)容相關(guān)優(yōu)先級(jí)等信息钱烟。

響應(yīng)首部字段(Response Header Fields)

是服務(wù)端向客戶端返回響應(yīng)時(shí)使用的首部字段晰筛,包含響應(yīng)的附加內(nèi)容嫡丙,可能也會(huì)要求客戶端附加額外的內(nèi)容信息拴袭。

實(shí)體首部字段(Entity Header Fields)

是針對(duì)請(qǐng)求報(bào)文和響應(yīng)報(bào)文的實(shí)體部分使用的首部。包含資源內(nèi)容更新時(shí)間等和實(shí)體有關(guān)的信息曙博。

在HTTP/1.1種規(guī)定了47種首部字段(圖表參考《圖解HTTP》拥刻,感謝作者。)

通用首部字段

請(qǐng)求首部字段

響應(yīng)首部字段

實(shí)體首部字段

其他首部字段

Cookie父泳、Set-Cookie般哼、Content-Disposition、Connection惠窄、Keep-Alive蒸眠、Proxy-Authenticate、Proxy-Authorization杆融、Trailer楞卡、TE、Transfer-Encoding、Upgrade etc...

這么多的首部字段蒋腮,估計(jì)如果不是很了解會(huì)被嚇著淘捡,但是根本不用全部記住,其實(shí)字段的名字就說(shuō)明了作用池摧,看一眼就大概知道是干啥的了焦除,只不過(guò)有些類(lèi)似的字段要區(qū)分一下就好了。只要深刻理解了HTTP的設(shè)計(jì)思路就沒(méi)有大問(wèn)題了作彤,熟悉常見(jiàn)的就可以了膘魄。用到的時(shí)候想了解細(xì)節(jié)再去查。

關(guān)于首部字段的細(xì)節(jié)請(qǐng)參考《圖解HTTP》或者《HTTP權(quán)威指南》的首部字段部分竭讳。夠再寫(xiě)一篇長(zhǎng)博客的了~

以上就把HTTP協(xié)議的重點(diǎn)內(nèi)容——報(bào)文格式瓣距、方法、狀態(tài)碼代咸、首部字段介紹完了蹈丸,可以說(shuō)對(duì)HTTP協(xié)議有了一些了解。下面就工作中的常見(jiàn)問(wèn)題(或者說(shuō)面試中的)做一個(gè)總結(jié)呐芥。^_^

七逻杖、關(guān)于HTTP的常見(jiàn)問(wèn)題及解答

1、GET和POST的區(qū)別

A. 從字面意思和HTTP的規(guī)范來(lái)看思瘟,GET用于獲取資源信息而POST是用來(lái)更新資源信息荸百。

B. GET提交請(qǐng)求的數(shù)據(jù)實(shí)體會(huì)放在URL的后面,用?來(lái)分割滨攻,參數(shù)用&連接够话,舉個(gè)栗子:/index.html?name=wang&login=1

C. GET提交的數(shù)據(jù)長(zhǎng)度是有限制的,因?yàn)閁RL長(zhǎng)度有限制光绕,具體的長(zhǎng)度限制視瀏覽器而定女嘲。而POST沒(méi)有。

D. GET提交的數(shù)據(jù)不安全诞帐,因?yàn)閰?shù)都會(huì)暴露在URL上欣尼。

2、408 Request Timeout和504 Gateway Timeout的區(qū)別

408是說(shuō)請(qǐng)求超時(shí)停蕉,就是建立連接之后再約定的時(shí)間內(nèi)客戶端沒(méi)有發(fā)送請(qǐng)求到客戶端到服務(wù)端愕鼓。本質(zhì)上原因在于客戶端或者網(wǎng)絡(luò)擁塞。504是網(wǎng)關(guān)超時(shí)慧起,是說(shuō)代理服務(wù)器把客戶端請(qǐng)求轉(zhuǎn)發(fā)到應(yīng)用服務(wù)器后再約定的時(shí)間內(nèi)沒(méi)有收到應(yīng)用服務(wù)器的響應(yīng)菇晃。本質(zhì)上原因在于服務(wù)端的響應(yīng)過(guò)慢,也有可能是網(wǎng)絡(luò)問(wèn)題蚓挤。

3磺送、Cookie和Session的區(qū)別和聯(lián)系

Cookie和Session都是為了保存客戶端和服務(wù)端之間的交互狀態(tài)剩失,實(shí)現(xiàn)機(jī)制不同,各有優(yōu)缺點(diǎn)册着。首先一個(gè)最大的區(qū)別就是Cookie是保存在客戶端而Session就保存在服務(wù)端的拴孤。Cookie是客戶端請(qǐng)求服務(wù)端時(shí)服務(wù)器會(huì)將一些信息以鍵值對(duì)的形式返回給客戶端,保存在瀏覽器中甲捏,交互的時(shí)候可以加上這些Cookie值演熟。用Cookie就可以方便的做一些緩存。Cookie的缺點(diǎn)是大小和數(shù)量都有限制司顿;Cookie是存在客戶端的可能被禁用芒粹、刪除、篡改大溜,是不安全的化漆;Cookie如果很大,每次要請(qǐng)求都要帶上钦奋,這樣就影響了傳輸效率座云。Session是基于Cookie來(lái)實(shí)現(xiàn)的,不同的是Session本身存在于服務(wù)端付材,但是每次傳輸?shù)臅r(shí)候不會(huì)傳輸數(shù)據(jù)朦拖,只是把代表一個(gè)客戶端的唯一ID(通常是JSESSIONID)寫(xiě)在客戶端的Cookie中,這樣每次傳輸這個(gè)ID就可以了厌衔。Session的優(yōu)勢(shì)就是傳輸數(shù)據(jù)量小璧帝,比較安全。但是Session也有缺點(diǎn)富寿,就是如果Session不做特殊的處理容易失效睬隶、過(guò)期、丟失或者Session過(guò)多導(dǎo)致服務(wù)器內(nèi)存溢出页徐,并且要實(shí)現(xiàn)一個(gè)穩(wěn)定可用安全的分布式Session框架也是有一定復(fù)雜度的苏潜。在實(shí)際使用中就要結(jié)合Cookie和Session的優(yōu)缺點(diǎn)針對(duì)不同的問(wèn)題來(lái)設(shè)計(jì)解決方案。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末泞坦,一起剝皮案震驚了整個(gè)濱河市窖贤,隨后出現(xiàn)的幾起案子砖顷,更是在濱河造成了極大的恐慌贰锁,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滤蝠,死亡現(xiàn)場(chǎng)離奇詭異豌熄,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)物咳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)锣险,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事芯肤∠镎郏” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵崖咨,是天一觀的道長(zhǎng)锻拘。 經(jīng)常有香客問(wèn)我,道長(zhǎng)击蹲,這世上最難降的妖魔是什么署拟? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮歌豺,結(jié)果婚禮上推穷,老公的妹妹穿的比我還像新娘。我一直安慰自己类咧,他們只是感情好馒铃,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著痕惋,像睡著了一般骗露。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上血巍,一...
    開(kāi)封第一講書(shū)人閱讀 49,760評(píng)論 1 289
  • 那天萧锉,我揣著相機(jī)與錄音,去河邊找鬼述寡。 笑死柿隙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鲫凶。 我是一名探鬼主播禀崖,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼螟炫!你這毒婦竟也來(lái)了波附?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤昼钻,失蹤者是張志新(化名)和其女友劉穎掸屡,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體然评,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡仅财,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了碗淌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盏求。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡抖锥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出碎罚,到底是詐尸還是另有隱情磅废,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布荆烈,位于F島的核電站还蹲,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏耙考。R本人自食惡果不足惜谜喊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望倦始。 院中可真熱鬧斗遏,春花似錦、人聲如沸鞋邑。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)枚碗。三九已至逾一,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肮雨,已是汗流浹背遵堵。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留怨规,地道東北人陌宿。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像波丰,于是被迫代替她去往敵國(guó)和親壳坪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容