cookie與session應(yīng)用于互聯(lián)網(wǎng)中的一項(xiàng)基本技術(shù)——會話(用戶與客戶端的交互)跟蹤技術(shù),用來跟蹤用戶的整個(gè)會話。簡單來說,cookie是通過在客戶端記錄信息確定用戶身份的,而session則通過在服務(wù)器端記錄信息確定用戶身份。
cookie與session應(yīng)用于互聯(lián)網(wǎng)中的一項(xiàng)基本技術(shù)——會話(用戶與客戶端的交互)跟蹤技術(shù),用來跟蹤用戶的整個(gè)會話。簡單來說,cookie是通過在客戶端記錄信息確定用戶身份的,而session則通過在服務(wù)器端記錄信息確定用戶身份。
cookie
定義
cookie是服務(wù)器傳給客戶端的體積很小的純文本文件??蛻舳苏埱蠓?wù)器,如果服務(wù)器需要記錄該用戶狀態(tài),就向客戶端瀏覽器發(fā)一個(gè)cookie??蛻舳藶g覽器會把cookie保存起來。當(dāng)瀏覽器再請求該
網(wǎng)站時(shí),瀏覽器把請求的網(wǎng)址連同該cookie一同提交給服務(wù)器。服務(wù)器檢查該cookie,以此來辨認(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會附在請求資源的HTTP請求頭上發(fā)送給服務(wù)器,服務(wù)器通過相應(yīng)方法獲得該cookie。
cookie屬性
cookie的主要屬性包括:名字,值,過期時(shí)間,路徑和域:
路徑與域一起構(gòu)成cookie的作用范圍。
過期時(shí)間:對于會話cookie,如果不設(shè)置過期時(shí)間,表示這個(gè)cookie的生命期為瀏覽器的會話期間,關(guān)閉瀏覽器窗口,cookie就消失了,會話cookie一般保存在內(nèi)存里。對于持久cookie,設(shè)置了過期時(shí)間,瀏覽器會把cookie保存在硬盤上,存儲在硬盤上的cookie會在不同的瀏覽器進(jìn)程間共享。
名字:就是給cookie起一個(gè)名字。
值:cookie中記錄的信息內(nèi)容。
應(yīng)用場景
判斷注冊用戶是否已經(jīng)登錄網(wǎng)站:用戶可能會得到提示,是否在下一次進(jìn)入此網(wǎng)站時(shí)保留用戶信息以便簡化登錄流程。
根據(jù)用戶的愛好定制內(nèi)容:
網(wǎng)站創(chuàng)建包含用戶瀏覽內(nèi)容的cookies,在用戶下次訪問時(shí),網(wǎng)站根據(jù)用戶的情況對顯示的內(nèi)容進(jìn)行調(diào)整,將用戶感興趣的內(nèi)容放在前列。
實(shí)現(xiàn)永久登錄:如果用戶是在自己家的電腦上上網(wǎng),登錄時(shí)就可以記住他的登錄信息,下次訪問時(shí)不需要再次登錄,直接訪問即可。
實(shí)現(xiàn)自動登錄:當(dāng)用戶
注冊網(wǎng)站后,就會收到一個(gè)惟一用戶ID的cookie。用戶再次連接時(shí),這個(gè)用戶ID會自動返回,服務(wù)器對它進(jìn)行檢查,確定它是否是注冊用戶且選擇了自動登錄,從而使用戶無需給出明確的用戶名和密碼,就可以訪問服務(wù)器上的資源。
使用cookie記錄各個(gè)用戶的訪問計(jì)數(shù):獲取cookie數(shù)組中專門用于統(tǒng)計(jì)用戶訪問次數(shù)的cookie的值,將值加1并將最新cookie輸出。
使用cookie記住用戶名與用戶密碼。用戶勾選了“自動登錄”,就把用戶名和密碼的信息放到cookie中。同時(shí)可設(shè)置有效期。
用cookie實(shí)現(xiàn)新手大禮包等彈窗功能。同理,將新手大禮包彈窗邏輯寫入到cookie中,并設(shè)置相應(yīng)的有效期。比如在有效期內(nèi)只彈出一次該彈窗,超過有效期登錄后再次彈出彈窗。