溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

深入淺出,解析cookie與session

發(fā)布時間:2020-06-20 08:04:09 來源:網(wǎng)絡 閱讀:14334 作者:Red_Ant_hoyl 欄目:web開發(fā)

一、session和cookie的特征


很多人認為,session是服務端的,cookie是客戶端的。其實呢,session和cookie都是服務器產(chǎn)生的,都是鍵值對應的。
**  session是保存在服務器的,服務器會生成對應的session文件,cookie是返回給客戶端的,然后客戶端在存儲相關文件。**
    session在服務器的入口是ID,然后服務器查出對應的的值,通過類似cookie的形式,返回給客戶端(相當于買電影票)。客戶端(瀏覽器),會在發(fā)送請求的時候,自動將本地存活的cookie封裝在信息頭中發(fā)送給服務器(相當于,看電影驗票)。
    **session和cookie都是有生命周期的。**
    cookie的生命周期受到:cookie自身生命周期以及客戶端是否保留cookie文件的影響(相當于,電影票沒看確丟了)。
    session的生命周期受到:session自身的存活周期以及客戶端是否關閉的影響。
    **session和cookie都是有作用域的。**

二、cookie和session的區(qū)別與使用


cookie:


  • 1、不同的瀏覽器存儲cookie的位置不一樣,也不能通用;
  • 2、cookie存儲是以域名的形式進行區(qū)分的;
  • 3、cookie的數(shù)據(jù)可以設置名字;
  • 4、一個域名下存放cookie的個數(shù)是有限的,不同的瀏覽器存放的個數(shù)也是不同的;
  • 5、每個cookie存放的文件內(nèi)容大小也是有限制的,不同瀏覽器存放的大小也是不同的;
    Jquery操作cookie:
    1.添加一個"會話cookie"
    $.cookie('the_cookie', 'the_value');
    這里沒有指明 cookie有效時間,所創(chuàng)建的cookie有效期默認到用戶關閉瀏覽器為止,所以被稱為 “會話cookie(session cookie)”。
    2.創(chuàng)建一個cookie并設置有效時間為 7天
    $.cookie('the_cookie', 'the_value', { expires: 7 });
    這里指明了cookie有效時間,所創(chuàng)建的cookie被稱為“持久 cookie (persistent cookie)”。注意單位是:天;
    3.創(chuàng)建一個cookie并設置 cookie的有效路徑
    $.cookie('the_cookie', 'the_value', { expires: 7, path: '/' });
    在默認情況下,只有設置 cookie的網(wǎng)頁才能讀取該 cookie。如果想讓一個頁面讀取另一個頁面設置的cookie,必須設置cookie的路徑。cookie的路徑用于設置能夠讀取 cookie的頂級目錄。將這個路徑設置為網(wǎng)站的根目錄,可以讓所有網(wǎng)頁都能互相讀取 cookie (一般不要這樣設置,防止出現(xiàn)沖突)。
    4.讀取cookie
    $.cookie('the_cookie');
    5.刪除cookie
    $.cookie('the_cookie', null);
    cookie是服務器返回給客戶端,并保存在客戶端的。因此存在暴利破解的可能性。

session


原理上,cookie與session,是相同的。同樣的,我們用Jquery操作session。使用 jquery.session.js操作session:
使用之前需要引入,Jquery.js與 jquery.session.js哦,我們將使用sessionStorage對象,它類似與localStorage對象,只是sessionStorage是用來儲存session數(shù)據(jù)的。當用戶關閉瀏覽器這個數(shù)據(jù)會被清除掉。
1.添加數(shù)據(jù)
$.session.set('key', 'value')
2.刪除數(shù)據(jù)
$.session.remove('key');
3.獲取數(shù)據(jù)
$.session.get('key');
4.清除數(shù)據(jù)
$.session.clear();
session相對cookie更加安全一點,因為用戶只是拿到了一個session ID來讀取服務保存的配置文件,而讀取的邏輯實現(xiàn)狀態(tài)等是沒有辦法輕而易舉破解,這種服務器的驗證機制的。

筆者綜述:當我們遇到一些全局變量,狀態(tài)值之類的。在一次請求,或者路徑跳轉(zhuǎn)等的時候,可以一步步的存儲獲取。但是當我們,跨請求,跨路徑在想獲取這些參數(shù)的時候怎么辦呢。自然而然就會想到:要是有一個配置文件就好了,我直接讀取配置文件里面的內(nèi)容,遇到新值我直接存儲或者修改配置文件就好了。那么cookie和session就是了。只不過,cookie的配置文件在本地,session的配置文件在服務器,都是會被清除掉的臨時文件。--HoYL

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI