前端页面——Cookie与Session有什么区别
我們?cè)趯?shí)際生活中總會(huì)遇到這樣的事情,我們一旦登錄(首次輸入用戶名和密碼)某個(gè)網(wǎng)站之后,當(dāng)我們?cè)俅卧L問的時(shí)候(只要不關(guān)閉瀏覽器),無(wú)需再次登錄。而當(dāng)我們?cè)谶@個(gè)網(wǎng)站瀏覽一段時(shí)間后,它會(huì)產(chǎn)生我們?yōu)g覽的記錄,而且有的網(wǎng)站還提供購(gòu)物車的功能。這些簡(jiǎn)單實(shí)用的功能就是通過(guò)cookie與Session實(shí)現(xiàn)的,接下來(lái),讓我們一起探討一下它們是如何運(yùn)行的。
1、概念
Cookie
有時(shí)也用其復(fù)數(shù)形式Cookies,指某些網(wǎng)站為了辨別用戶身份、進(jìn)行session跟蹤而儲(chǔ)存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過(guò)加密)。
Session
Session直接翻譯成中文比較困難,一般都譯成時(shí)域。在計(jì)算機(jī)專業(yè)術(shù)語(yǔ)中,Session是指一個(gè)終端用戶與交互系統(tǒng)進(jìn)行通信的時(shí)間間隔,通常指從注冊(cè)進(jìn)入系統(tǒng)到注銷退出系統(tǒng)之間所經(jīng)過(guò)的時(shí)間。以及如果需要的話,可能還有一定的操作空間。
具體到Web中的Session指的就是用戶在瀏覽某個(gè)網(wǎng)站時(shí),從進(jìn)入網(wǎng)站到關(guān)閉這個(gè)網(wǎng)站所經(jīng)過(guò)的這段時(shí)間,也就是用戶瀏覽這個(gè)網(wǎng)站所花費(fèi)的時(shí)間。因此從上述的定義中我們可以看到,Session實(shí)際上是一個(gè)特定的時(shí)間概念。
需要注意的是,一個(gè)Session的概念需要包括特定的客戶端,特定的服務(wù)器端以及不中斷的操作時(shí)間。A用戶和C服務(wù)器建立連接時(shí)所處的Session同B用戶和C服務(wù)器建立連接時(shí)所處的Session是兩個(gè)不同的Session。
2、區(qū)別
1、cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務(wù)器上
2、cookie不是很安全,別人可以分析存放在本地的COOKIE并進(jìn)行
3、session會(huì)在一定時(shí)間內(nèi)保存在服務(wù)器上。當(dāng)訪問增多,會(huì)比較占用你服務(wù)器的性能
4、單個(gè)cookie在客戶端的限制是3K,就是說(shuō)一個(gè)站點(diǎn)在客戶端存放的COOKIE不能大于3K。
3運(yùn)行機(jī)制
3.1、Cookie機(jī)制
在程序中, 會(huì)話跟蹤是很重要的事情。理論上,一個(gè)用戶的所有請(qǐng)求操作都應(yīng)該屬于同一個(gè)會(huì)話,而另一個(gè)用戶的所有請(qǐng)求操作則應(yīng)該屬于另一個(gè)會(huì)話,二者不能混淆。例如, 用戶A在超市購(gòu)買的任何商品都應(yīng)該放在A的購(gòu)物車內(nèi),不論是用戶A什么時(shí)間購(gòu)買的,這都是屬于同一個(gè)會(huì)話的,不能放入用戶B或用戶C的購(gòu)物車內(nèi),這不屬于 同一個(gè)會(huì)話。
而Web應(yīng)用程序是 使用HTTP協(xié)議傳輸數(shù)據(jù)的。HTTP協(xié)議是無(wú)狀態(tài)的協(xié)議。一旦數(shù)據(jù)交換完畢,客戶端與服務(wù)器端的連接就會(huì)關(guān)閉,再次交換數(shù)據(jù)需要建立新的連接。這就意味 著服務(wù)器無(wú)法從連接上跟蹤會(huì)話。即用戶A購(gòu)買了一件商品放入購(gòu)物車內(nèi),當(dāng)再次購(gòu)買商品時(shí)服務(wù)器已經(jīng)無(wú)法判斷該購(gòu)買行為是屬于用戶A的會(huì)話還是用戶B的會(huì)話 了。要跟蹤該會(huì)話,必須引入一種機(jī)制。
Cookie就是這樣的一種機(jī)制。它可以彌補(bǔ)HTTP協(xié)議無(wú)狀態(tài)的不足。在Session出現(xiàn)之前,基本上所有的網(wǎng)站都采用Cookie來(lái)跟蹤會(huì)話。
由于HTTP是一種無(wú)狀態(tài)的協(xié)議,服務(wù)器單從網(wǎng)絡(luò)連接上無(wú)從知道客戶身份。怎么辦呢?就給客戶端們頒發(fā)一個(gè)通行證吧,每人一個(gè),無(wú)論誰(shuí)訪問都必須攜帶自己通行證。這樣服務(wù)器就能從通行證上確認(rèn)客戶身份了。這就是Cookie的工作原理。
Cookie實(shí)際上是一小段的文本信息。客戶端請(qǐng)求服務(wù)器,如果服務(wù)器需要記錄該用戶狀態(tài),就使用response向客戶端瀏覽器頒發(fā)一個(gè) Cookie。客戶端瀏覽器會(huì)把Cookie保存起來(lái)。當(dāng)瀏覽器再請(qǐng)求該網(wǎng)站時(shí),瀏覽器把請(qǐng)求的網(wǎng)址連同該Cookie一同提交給服務(wù)器。服務(wù)器檢查該 Cookie,以此來(lái)辨認(rèn)用戶狀態(tài)。服務(wù)器還可以根據(jù)需要修改Cookie的內(nèi)容。
3.2 Session機(jī)制
除了使用Cookie,Web應(yīng)用程序中還經(jīng)常使用Session來(lái)記錄客戶端狀態(tài)。Session是服務(wù)器端使用的一種記錄客戶端狀態(tài)的機(jī)制,使用上比Cookie簡(jiǎn)單一些,相應(yīng)的也增加了服務(wù)器的存儲(chǔ)壓力。
客戶端瀏覽器訪問服務(wù)器的時(shí)候,服務(wù)器把客戶端信息以某種形式記錄在服務(wù)器上。這就是Session。客戶端瀏覽器再次訪問時(shí)只需要從該Session中查找該客戶的狀態(tài)就可以了。
如果說(shuō)Cookie機(jī)制是通過(guò)檢查客戶身上的“通行證”來(lái)確定客戶身份的話,那么Session機(jī)制就是通過(guò)檢查服務(wù)器上的“客戶明細(xì)表”來(lái)確認(rèn)客戶身份。Session相當(dāng)于程序在服務(wù)器上建立的一份客戶檔案,客戶來(lái)訪的時(shí)候只需要查詢客戶檔案表就可以了。
如下圖所示,張三和李四分別訪問該網(wǎng)站,在服務(wù)端會(huì)產(chǎn)生兩個(gè)SessionID來(lái)區(qū)分該用戶,而在客戶端將對(duì)應(yīng)的SessionID存放在Cookie中,以便我們?cè)俅卧L問時(shí)得到我們所需的資源。
4總結(jié)
這里,我們將cookie跟session簡(jiǎn)單介紹了一下,至于實(shí)際應(yīng)用還需要我們?cè)谧鲰?xiàng)目中慢慢體會(huì),例如,如何控制他們的生命周期,有效期等等。而且session和cookie是我們必須要掌握的技術(shù),因?yàn)槲覀円?jīng)常使用它來(lái)進(jìn)行消息的傳遞與驗(yàn)證,而且它們還應(yīng)用在權(quán)限控制,單點(diǎn)登錄等技術(shù)。不管怎么說(shuō),我們都應(yīng)該重視這種簡(jiǎn)單常用的小技能。
轉(zhuǎn)載于:https://www.cnblogs.com/zhuiluoyu/p/5386240.html
總結(jié)
以上是生活随笔為你收集整理的前端页面——Cookie与Session有什么区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求一个单身不恋爱的个性签名!
- 下一篇: Oracle开发:normal ,sys