亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Cookie 和 Session 區(qū)別匯總

Jinkey / 3150人閱讀

摘要:無(wú)狀態(tài)協(xié)議無(wú)狀態(tài)協(xié)議,是指協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。是通過(guò)客戶端保持狀態(tài)的解決方案。而這次,信息則存放在請(qǐng)求頭了。

HTTP無(wú)狀態(tài)協(xié)議
HTTP無(wú)狀態(tài)協(xié)議,是指協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快。

簡(jiǎn)介

客戶端與服務(wù)器進(jìn)行動(dòng)態(tài)交互的Web應(yīng)用程序出現(xiàn)之后,HTTP無(wú)狀態(tài)的特性嚴(yán)重阻礙了這些應(yīng)用程序的實(shí)現(xiàn),畢竟交互是需要承前啟后的,簡(jiǎn)單的購(gòu)物車程序也要知道用戶到底在之前選擇了什么商品。于是,兩種用于保持HTTP連接狀態(tài)的技術(shù)就應(yīng)運(yùn)而生了,一個(gè)是Cookie,而另一個(gè)則是SessionHTTP本身是一個(gè)無(wú)狀態(tài)的連接協(xié)議,為了支持客戶端與服務(wù)器之間的交互,我們就需要通過(guò)不同的技術(shù)為交互存儲(chǔ)狀態(tài),而這些不同的技術(shù)就是Cookie和Session了。

Cookie是通過(guò)客戶端保持狀態(tài)的解決方案。從定義上來(lái)說(shuō),Cookie就是由服務(wù)器發(fā)給客戶端的特殊信息,而這些信息以文本文件的方式存放在客戶端,然后客戶端每次向服務(wù)器發(fā)送請(qǐng)求的時(shí)候都會(huì)帶上這些特殊的信息。讓我們說(shuō)得更具體一些:當(dāng)用戶使用瀏覽器訪問(wèn)一個(gè)支持Cookie的網(wǎng)站的時(shí)候,用戶會(huì)提供包括用戶名在內(nèi)的個(gè)人信息并且提交至服務(wù)器;接著,服務(wù)器在向客戶端回傳相應(yīng)的超文本的同時(shí)也會(huì)發(fā)回這些個(gè)人信息,當(dāng)然這些信息并不是存放在HTTP響應(yīng)體(Response Body)中的,而是存放于HTTP響應(yīng)頭(Response Header);當(dāng)客戶端瀏覽器接收到來(lái)自服務(wù)器的響應(yīng)之后,瀏覽器會(huì)將這些信息存放在一個(gè)統(tǒng)一的位置,對(duì)于Windows操作系統(tǒng)而言,我們可以從: [系統(tǒng)盤]:Documents and Settings[用戶名]Cookies目錄中找到存儲(chǔ)的Cookie;自此,客戶端再向服務(wù)器發(fā)送請(qǐng)求的時(shí)候,都會(huì)把相應(yīng)的Cookie再次發(fā)回至服務(wù)器。而這次,Cookie信息則存放在HTTP請(qǐng)求頭(Request Header)了。斜體文字

發(fā)展

有了Cookie這樣的技術(shù)實(shí)現(xiàn),服務(wù)器在接收到來(lái)自客戶端瀏覽器的請(qǐng)求之后,就能夠通過(guò)分析存放于請(qǐng)求頭的Cookie得到客戶端特有的信息,從而動(dòng)態(tài)生成與該客戶端相對(duì)應(yīng)的內(nèi)容。通常,我們可以從很多網(wǎng)站的登錄界面中看到“請(qǐng)記住我”這樣的選項(xiàng),如果你勾選了它之后再登錄,那么在下一次訪問(wèn)該網(wǎng)站的時(shí)候就不需要進(jìn)行重復(fù)而繁瑣的登錄動(dòng)作了,而這個(gè)功能就是通過(guò)Cookie實(shí)現(xiàn)的。

與Cookie相對(duì)的一個(gè)解決方案是Session,它是通過(guò)服務(wù)器來(lái)保持狀態(tài)的。由于Session這個(gè)詞匯包含的語(yǔ)義很多,因此需要在這里明確一下 Session的含義。首先,我們通常都會(huì)把Session翻譯成會(huì)話因此我們可以把客戶端瀏覽器與服務(wù)器之間一系列交互的動(dòng)作稱為一個(gè) Session。從這個(gè)語(yǔ)義出發(fā),我們會(huì)提到Session持續(xù)的時(shí)間,會(huì)提到在Session過(guò)程中進(jìn)行了什么操作等等;其次,Session指的是服務(wù)器端為客戶端所開(kāi)辟的存儲(chǔ)空間,在其中保存的信息就是用于保持狀態(tài)。從這個(gè)語(yǔ)義出發(fā),我們則會(huì)提到往Session中存放什么內(nèi)容,如何根據(jù)鍵值從 Session中獲取匹配的內(nèi)容等。
要使用Session,第一步當(dāng)然是創(chuàng)建Session了。那么Session在何時(shí)創(chuàng)建呢?當(dāng)然還是在服務(wù)器端程序運(yùn)行的過(guò)程中創(chuàng)建的,不同語(yǔ)言實(shí)現(xiàn)的應(yīng)用程序有不同創(chuàng)建Session的方法,而在Java中是通過(guò)調(diào)用HttpServletRequest的getSession方法(使用true作為參數(shù))創(chuàng)建的。在創(chuàng)建了Session的同時(shí),服務(wù)器會(huì)為該Session生成唯一的Session id,而這個(gè)Session id在隨后的請(qǐng)求中會(huì)被用來(lái)重新獲得已經(jīng)創(chuàng)建的Session;在Session被創(chuàng)建之后,就可以調(diào)用Session相關(guān)的方法往Session中增加內(nèi)容了,而這些內(nèi)容只會(huì)保存在服務(wù)器中,發(fā)到客戶端的只有Session id;當(dāng)客戶端再次發(fā)送請(qǐng)求的時(shí)候,會(huì)將這個(gè)Session id帶上,服務(wù)器接受到請(qǐng)求之后就會(huì)依據(jù)Session id找到相應(yīng)的Session,從而再次使用之。正是這樣一個(gè)過(guò)程,用戶的狀態(tài)也就得以保持了。
綜上所述,HTTP本身是一個(gè)無(wú)狀態(tài)的連接協(xié)議,為了支持客戶端與服務(wù)器之間的交互,我們就需要通過(guò)不同的技術(shù)為交互存儲(chǔ)狀態(tài),而這些不同的技術(shù)就是Cookie和Session了。

Cookie

存放位置

cookie數(shù)據(jù)存放在客戶的瀏覽器上,服務(wù)器能夠知道其中的信息;

使用方式

如果在瀏覽器中不設(shè)置過(guò)期時(shí)間,cookie被保存在內(nèi)存中,生命周期隨瀏覽器的關(guān)閉而結(jié)束,這種cookie簡(jiǎn)稱會(huì)話cookie。

如果在瀏覽器中設(shè)置了cookie的過(guò)期時(shí)間,cookie被保存在硬盤中,關(guān)閉瀏覽器后,cookie數(shù)據(jù)仍然存在,直到過(guò)期時(shí)間結(jié)束才消失。

存儲(chǔ)

單個(gè)cookie保存的數(shù)據(jù)不能超過(guò)4KB,一個(gè)服務(wù)器最多在客戶端瀏覽器上保存20個(gè)Cookie,一個(gè)瀏覽器最多保存300個(gè)Cookie;
cookie只能保存字符串類型,以文本的方式

應(yīng)用場(chǎng)景

cookie技術(shù)有4個(gè)組件:在HTTP響應(yīng)報(bào)文中有一個(gè)cookie首部行;在HTTP請(qǐng)求報(bào)文中有一個(gè)cookie首部行;在用戶端系統(tǒng)中保留有一個(gè)cookie文件,并由用戶的瀏覽器進(jìn)行管理;位于Web站點(diǎn)的一個(gè)后端數(shù)據(jù)庫(kù)

判斷用戶是否登陸過(guò)網(wǎng)站,以便下次登錄時(shí)能夠?qū)崿F(xiàn)自動(dòng)登錄(或者記住密碼)。

如果我們刪除cookie,則每次登錄必須從新填寫登錄的相關(guān)信息。

保存上次登錄的時(shí)間等信息。 保存上次查看的頁(yè)面 瀏覽計(jì)數(shù)

訪問(wèn)

cookie中如果設(shè)置了路徑參數(shù),那么同一個(gè)網(wǎng)站中不同路徑下的cookie互相是訪問(wèn)不到的。

缺點(diǎn)

大小受限、用戶可以操作(禁用)cookie,使功能受限、、安全性較低、有些狀態(tài)不可能保存在客戶端、每次訪問(wèn)都要傳送cookie給服務(wù)器,浪費(fèi)帶寬、cookie數(shù)據(jù)有路徑(path)的概念,可以限制cookie只屬于某個(gè)路徑下。

其他



攜帶cookie進(jìn)行數(shù)據(jù)請(qǐng)求

cookie數(shù)據(jù)始終在同源的http請(qǐng)求中攜帶(即使不需要),即cookie在瀏覽器和服務(wù)器間來(lái)回傳遞;
每次請(qǐng)求一個(gè)新的頁(yè)面的時(shí)候cookie都會(huì)被發(fā)送過(guò)去,這樣無(wú)形中浪費(fèi)了帶寬,另外cookie還需要指定作用域,不可跨域調(diào)用。
Session

存放位置

session數(shù)據(jù)放在服務(wù)器上,客戶端不知道其中的信息,不過(guò)session可以通過(guò)特殊的方式做持久化管理(memcache,redis);

使用方式

session在什么時(shí)候創(chuàng)建,以及session一致性問(wèn)題

session會(huì)在一定時(shí)間內(nèi)保存在服務(wù)器上,當(dāng)訪問(wèn)增多,會(huì)比較占用你服務(wù)器的性能,考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用cookie 
當(dāng)程序需要為某個(gè)客戶端的請(qǐng)求創(chuàng)建一個(gè)session時(shí),服務(wù)器首先檢查這個(gè)客戶端的請(qǐng)求里是否已包含了一個(gè)session標(biāo)識(shí)(稱為session id),如果已包含則說(shuō)明以前已經(jīng)為此客戶端創(chuàng)建過(guò)session,服務(wù)器就按照session id把這個(gè)session檢索出來(lái)使用檢索不到,會(huì)新建一個(gè)),如果客戶端請(qǐng)求不包含session id,則為客戶端創(chuàng)建一個(gè)session并且生成一個(gè)與此session相關(guān)聯(lián)的session id,session id的值應(yīng)該是一個(gè)既不會(huì)重復(fù),又不容易被找到規(guī)律以仿造的字符串,這個(gè)session id將被在本次響應(yīng)中返回給客戶端保存。保存這個(gè)session id的方式可以采用cookie,這樣在交互過(guò)程中瀏覽器可以自動(dòng)的按照規(guī)則把這個(gè)標(biāo)識(shí)發(fā)送給服務(wù)器。

通常使用cookie方式存儲(chǔ)sessionid到客戶端,在交互中瀏覽器按照規(guī)則將sessionid發(fā)送給服務(wù)器。如果用戶禁用cookie,則要使用URL重寫,可以通過(guò)response.encodeURL(url)
進(jìn)行實(shí)現(xiàn);API對(duì)encodeURL的結(jié)束為,當(dāng)瀏覽器支持Cookie時(shí),url不做任何處理;當(dāng)瀏覽器不支持Cookie的時(shí)候,將會(huì)重寫URL將SessionID拼接到訪問(wèn)地址后。

存儲(chǔ)

session大小沒(méi)有限制
session中保存的是對(duì)象,session通過(guò)類似與Hashtable的數(shù)據(jù)結(jié)構(gòu)來(lái)保存,能支持任何類型的對(duì)象(session中可含有多個(gè)對(duì)象)

應(yīng)用場(chǎng)景

Session用于保存每個(gè)用戶的專用信息,變量的值保存在服務(wù)器端,通過(guò)SessionID來(lái)區(qū)分不同的客戶。

網(wǎng)上商城中的購(gòu)物車

保存用戶登錄信息

將某些數(shù)據(jù)放入session中,供同一用戶的不同頁(yè)面使用

防止用戶非法登錄

訪問(wèn)

session不能區(qū)分路徑,同一個(gè)用戶在訪問(wèn)一個(gè)網(wǎng)站期間,所有的session在任何一個(gè)地方都可以訪問(wèn)到。

缺點(diǎn)

Session保存的東西越多,就越占用服務(wù)器內(nèi)存,對(duì)于用戶在線人數(shù)較多的網(wǎng)站,服務(wù)器的內(nèi)存壓力會(huì)比較大、依賴于cookie(sessionID保存在cookie),如果禁用cookie,則要使用URL重寫,不安全、創(chuàng)建Session變量有很大的隨意性,可隨時(shí)調(diào)用,不需要開(kāi)發(fā)者做精確地處理,所以,過(guò)度使用session變量將會(huì)導(dǎo)致代碼不可讀而且不好維護(hù)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/103380.html

相關(guān)文章

  • Cookie Session 區(qū)別匯總

    摘要:無(wú)狀態(tài)協(xié)議無(wú)狀態(tài)協(xié)議,是指協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。是通過(guò)客戶端保持狀態(tài)的解決方案。而這次,信息則存放在請(qǐng)求頭了。 HTTP無(wú)狀態(tài)協(xié)議 HTTP無(wú)狀態(tài)協(xié)議,是指協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方...

    Kross 評(píng)論0 收藏0
  • 前端工程師面試必備(持續(xù)更新中)

    摘要:最近的一次更新的變量有效,并且會(huì)作用于全部的引用的處理方式和相同,變量值輸出時(shí)根據(jù)之前最近的一次定義計(jì)算,每次引用最近的定義有效嵌套三種預(yù)編譯器的選擇器嵌套在使用上來(lái)說(shuō)沒(méi)有任何區(qū)別,甚至連引用父級(jí)選擇器的標(biāo)記也相同。 面試匯總一:2018大廠高級(jí)前端面試題匯總 高級(jí)面試:【半月刊】前端高頻面試題及答案匯總 css內(nèi)容 響應(yīng)式布局 當(dāng)前主流的三種預(yù)編譯器比較 CSS預(yù)處理器用一種專門的...

    jubincn 評(píng)論0 收藏0
  • 初中級(jí)PHP面試基礎(chǔ)匯總

    摘要:如何實(shí)現(xiàn)持久化持久化,將在內(nèi)存中的的狀態(tài)保存到硬盤中,相當(dāng)于備份數(shù)據(jù)庫(kù)狀態(tài)持久化,持久化是通過(guò)保存服務(wù)器鎖執(zhí)行的寫狀態(tài)來(lái)記錄數(shù)據(jù)庫(kù)的。 showImg(https://segmentfault.com/img/bVbejmD?w=643&h=404); 這是我整理的一套面試題,老鐵們看看就當(dāng)復(fù)習(xí)了哦 概述 感覺(jué)現(xiàn)在發(fā)面試題有些冷門,就跟昨天德國(guó)那場(chǎng)似的,不過(guò)看看當(dāng)提前復(fù)習(xí)了。提前備戰(zhàn)。...

    B0B0 評(píng)論0 收藏0
  • 前端面試題目匯總

    摘要:線程在執(zhí)行過(guò)程中與進(jìn)程還是有區(qū)別的。但是線程不能夠獨(dú)立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個(gè)線程執(zhí)行控制。從邏輯角度來(lái)看,多線程的意義在于一個(gè)應(yīng)用程序中,有多個(gè)執(zhí)行部分可以同時(shí)執(zhí)行。 關(guān)于js 1.原型鏈 2.AJAX請(qǐng)求數(shù)據(jù)時(shí)解決緩存的辦法3.js的繼承 ...

    lastSeries 評(píng)論0 收藏0
  • PHP面試??贾畷?huì)話控制

    摘要:一的會(huì)話也稱為。如果啟動(dòng)會(huì)話成功,則函數(shù)返回,否則返回。會(huì)話啟動(dòng)后就可以載入該會(huì)話已經(jīng)注冊(cè)的會(huì)話變量以便使用。但數(shù)組創(chuàng)建的在會(huì)話結(jié)束后就會(huì)失效。預(yù)告本周三更新面試??贾W(wǎng)絡(luò)協(xié)議,敬請(qǐng)期待。 你好,是我琉憶,歡迎您來(lái)到PHP面試專欄。本周(2019.2-25至3-1)的一三五更新的文章如下: 周一:PHP面試??贾畷?huì)話控制周三:PHP面試??贾W(wǎng)絡(luò)協(xié)議周五:PHP面試??碱}之會(huì)話控制和...

    lsxiao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<