cookie

  定義

  cookie是服務(wù)器傳給客戶端的體積很小的純文本文件。客戶端請(qǐng)求服務(wù)器,如果服務(wù)器需要記錄該用戶狀態(tài),就向客戶端瀏覽器發(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)。

  cookie機(jī)制

  cookie的生成(java代碼舉例):

  Cookie cookie = new Cookie(“key”,”value”);

  cookie.setMaxAge(60); //設(shè)置cookie的生存期60秒

  cookie.setPath(“/test”);//設(shè)置cookie的路徑

  cookie會(huì)附在請(qǐng)求資源的HTTP請(qǐng)求頭上發(fā)送給服務(wù)器,服務(wù)器通過(guò)相應(yīng)方法獲得該cookie。

  cookie屬性

  cookie的主要屬性包括:名字,值,過(guò)期時(shí)間,路徑和域:

  路徑與域一起構(gòu)成cookie的作用范圍。

  過(guò)期時(shí)間:對(duì)于會(huì)話cookie,如果不設(shè)置過(guò)期時(shí)間,表示這個(gè)cookie的生命期為瀏覽器的會(huì)話期間,關(guān)閉瀏覽器窗口,cookie就消失了,會(huì)話cookie一般保存在內(nèi)存里。對(duì)于持久cookie,設(shè)置了過(guò)期時(shí)間,瀏覽器會(huì)把cookie保存在硬盤上,存儲(chǔ)在硬盤上的cookie會(huì)在不同的瀏覽器進(jìn)程間共享。

  名字:就是給cookie起一個(gè)名字。

  值:cookie中記錄的信息內(nèi)容。

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

  判斷注冊(cè)用戶是否已經(jīng)登錄網(wǎng)站:用戶可能會(huì)得到提示,是否在下一次進(jìn)入此網(wǎng)站時(shí)保留用戶信息以便簡(jiǎn)化登錄流程。

  根據(jù)用戶的愛(ài)好定制內(nèi)容:網(wǎng)站創(chuàng)建包含用戶瀏覽內(nèi)容的cookies,在用戶下次訪問(wèn)時(shí),網(wǎng)站根據(jù)用戶的情況對(duì)顯示的內(nèi)容進(jìn)行調(diào)整,將用戶感興趣的內(nèi)容放在前列。

  實(shí)現(xiàn)永久登錄:如果用戶是在自己家的電腦上上網(wǎng),登錄時(shí)就可以記住他的登錄信息,下次訪問(wèn)時(shí)不需要再次登錄,直接訪問(wèn)即可。

  實(shí)現(xiàn)自動(dòng)登錄:當(dāng)用戶注冊(cè)網(wǎng)站后,就會(huì)收到一個(gè)惟一用戶ID的cookie。用戶再次連接時(shí),這個(gè)用戶ID會(huì)自動(dòng)返回,服務(wù)器對(duì)它進(jìn)行檢查,確定它是否是注冊(cè)用戶且選擇了自動(dòng)登錄,從而使用戶無(wú)需給出明確的用戶名和密碼,就可以訪問(wèn)服務(wù)器上的資源。

  使用cookie記錄各個(gè)用戶的訪問(wèn)計(jì)數(shù):獲取cookie數(shù)組中專門用于統(tǒng)計(jì)用戶訪問(wèn)次數(shù)的cookie的值,將值加1并將最新cookie輸出。

  使用cookie記住用戶名與用戶密碼。用戶勾選了“自動(dòng)登錄”,就把用戶名和密碼的信息放到cookie中。同時(shí)可設(shè)置有效期。

  用cookie實(shí)現(xiàn)新手大禮包等彈窗功能。同理,將新手大禮包彈窗邏輯寫入到cookie中,并設(shè)置相應(yīng)的有效期。比如在有效期內(nèi)只彈出一次該彈窗,超過(guò)有效期登錄后再次彈出彈窗。

  session

  定義

  session是另一種記錄客戶狀態(tài)的機(jī)制,不同的是cookie保存在客戶端瀏覽器中,而session保存在服務(wù)器上。客戶端瀏覽器訪問(wèn)服務(wù)器的時(shí)候,服務(wù)器把客戶端信息以某種形式記錄在服務(wù)器上,這就是session。客戶端瀏覽器再次訪問(wèn)時(shí)只需要從該session中查找該客戶的狀態(tài)就可以了。session相當(dāng)于程序在服務(wù)器上建立的一份用戶的檔案,用戶來(lái)訪的時(shí)候只需要查詢用戶檔案表就可以了。

  session的生命周期與有效期

  為了獲得更高的存取速度,服務(wù)器一般把session放在內(nèi)存里。每個(gè)用戶都會(huì)有一個(gè)獨(dú)立的session。如果session內(nèi)容過(guò)于復(fù)雜,當(dāng)大量客戶訪問(wèn)服務(wù)器時(shí)可能會(huì)導(dǎo)致內(nèi)存溢出。session的使用雖然比cookie方便,但是過(guò)多的session存儲(chǔ)在服務(wù)器內(nèi)存中,會(huì)對(duì)服務(wù)器造成壓力。因此,session里的信息應(yīng)該盡量精簡(jiǎn)。

  session在用戶第一次訪問(wèn)服務(wù)器的時(shí)候自動(dòng)創(chuàng)建。session生成后,只要用戶繼續(xù)訪問(wèn),服務(wù)器就會(huì)更新Session的最后訪問(wèn)時(shí)間,并維護(hù)該session。

  由于有越來(lái)越多的用戶訪問(wèn)服務(wù)器,因此session也會(huì)越來(lái)越多。為防止內(nèi)存溢出,服務(wù)器會(huì)把長(zhǎng)時(shí)間內(nèi)沒(méi)有活躍的session從內(nèi)存中刪除。這個(gè)時(shí)間就是session的超時(shí)時(shí)間。如果超過(guò)了超時(shí)時(shí)間沒(méi)訪問(wèn)過(guò)服務(wù)器,session就自動(dòng)失效了。

  session與cookie

  雖然session保存在服務(wù)器,但是它的正常運(yùn)行仍然需要客戶端瀏覽器的支持。這是因?yàn)閟ession需要使用cookie作為識(shí)別標(biāo)志。HTTP協(xié)議是無(wú)狀態(tài)的,session不能依據(jù)HTTP連接來(lái)判斷是否為同一客戶,因此服務(wù)器向客戶端瀏覽器發(fā)送一個(gè)名為SESSIONID的cookie,它的值為該Session的id。Session依據(jù)該cookie來(lái)識(shí)別是否為同一用戶。

  對(duì)于不支持cookie的手機(jī)瀏覽器,有另一種解決方案:URL地址重寫。URL地址重寫的原理是將該用戶session的id信息重寫到URL地址中,服務(wù)器能夠解析重寫后的URL獲取session的id。這樣即使客戶端不支持cookie,也可以使用session來(lái)記錄用戶狀態(tài)。

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

  通過(guò)session累計(jì)用戶數(shù)據(jù)。例如,一個(gè)未登錄用戶訪問(wèn)了京東網(wǎng)站,這個(gè)時(shí)候京東對(duì)其下發(fā)了一個(gè) cookie,假設(shè)cookie的名字叫做abc,那這條記錄就是 abc=001,同時(shí)京東的后臺(tái)也生成了一個(gè) session id, 它的值也為 001, 001 這個(gè)客戶在 2 點(diǎn)、 3 點(diǎn)、 4 點(diǎn)分別添加了三件商品到購(gòu)物車,這樣后臺(tái)也記錄了 session id 為 001的用戶的購(gòu)物車?yán)锩嬉呀?jīng)有三件商品,并且只要每次客戶端 cookie 帶上來(lái)的值里面包含session id,后臺(tái)都能夠展示相應(yīng)的數(shù)據(jù),如果這個(gè)時(shí)候,在瀏覽器里面清空 cookie,cookie 數(shù)據(jù)消失之后,后臺(tái)和客戶端無(wú)法建立對(duì)應(yīng)關(guān)系,購(gòu)物車的數(shù)據(jù)就會(huì)失效了。

  通過(guò)session實(shí)現(xiàn)單點(diǎn)登錄。一個(gè)用戶帳號(hào)成功登錄后,在該次session還未失效之前,不能在其他機(jī)器上登錄同一個(gè)帳號(hào)。登錄后將用戶信息保存到session中,如果此時(shí)在另外一臺(tái)機(jī)器上一個(gè)相同的帳號(hào)請(qǐng)求登錄,通過(guò)遍歷(遍歷的意思就是將所有session都查看一遍)Web服務(wù)器中所有session并判斷其中是否包含同樣的用戶信息,如果有,在另一臺(tái)機(jī)器上是不能登錄該帳號(hào)的。

  以上,就是對(duì)cookie與session的簡(jiǎn)單總結(jié),大家學(xué)會(huì)了嗎?

  作者:流年

  本文由 @流年 原創(chuàng)發(fā)布。未經(jīng)許可,禁止轉(zhuǎn)載。

  題圖由作者提供

更多關(guān)于云服務(wù)器域名注冊(cè),虛擬主機(jī)的問(wèn)題,請(qǐng)?jiān)L問(wèn)三五互聯(lián)官網(wǎng):m.shinetop.cn

贊(0)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。郵箱:3140448839@qq.com。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明出處:三五互聯(lián)知識(shí)庫(kù) » 深層次理解cookie/session機(jī)制

登錄

找回密碼

注冊(cè)

主站蜘蛛池模板: 日韩一区二区黄色一级片| 四虎在线成人免费观看| 福利一区二区在线播放| 成人网站免费看黄a站视频| 四虎在线成人免费观看| 国产乱码精品一区二区三| 国产午夜福利精品视频| 国产精品午夜福利在线观看| 亚洲色最新高清AV网站| 欧美乱妇高清无乱码免费| 凌源市| 亚洲av片在线免费观看| 精品久久丝袜熟女一二三| 亚洲黄色性视频| 狠狠亚洲色一日本高清色| 蜜桃亚洲一区二区三区四| 717午夜伦伦电影理论片| 无码乱人伦一区二区亚洲一| 国产精品日韩av在线播放| 久久精品免视看国产成人| 四虎永久精品在线视频| 老司机精品成人无码AV| 乱码精品一区二区亚洲区| 亚洲av日韩av中文高清性色| 日本不卡码一区二区三区| 亚洲成aⅴ人在线电影| 亚洲欧美中文字幕5发布| 国产精品国三级国产av| 丰满人妻被黑人猛烈进入| 日韩一区二区三区日韩精品| 连南| 色综合色综合久久综合频道| 中文文字幕文字幕亚洲色| 人妻中出无码一区二区三区| 最新国产AV最新国产在钱| 精品无码成人片一区二区| 开心激情站开心激情网六月婷婷| 亚洲成色在线综合网站| 日韩高清视频 一区二区| 国产av一区二区三区| 国产精品制服丝袜白丝|