1. 程式人生 > >深入淺出,解析cookie與session

深入淺出,解析cookie與session

修改配置文件 必須 變量 刪除數據 persist 頁面設置 丟了 域名 會話

一、session和cookie的特征


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

二、cookie和session的區別與使用


cookie:


  • 1、不同的瀏覽器存儲cookie的位置不一樣,也不能通用;
  • 2、cookie存儲是以域名的形式進行區分的;
  • 3、cookie的數據可以設置名字;
  • 4、一個域名下存放cookie的個數是有限的,不同的瀏覽器存放的個數也是不同的;
  • 5、每個cookie存放的文件內容大小也是有限制的,不同瀏覽器存放的大小也是不同的;
    Jquery操作cookie:
    1.添加一個"會話cookie"
    $.cookie(‘the_cookie‘, ‘the_value‘);
    這裏沒有指明 cookie有效時間,所創建的cookie有效期默認到用戶關閉瀏覽器為止,所以被稱為 “會話cookie(session cookie)”。
    2.創建一個cookie並設置有效時間為 7天
    $.cookie(‘the_cookie‘, ‘the_value‘, { expires: 7 });
    這裏指明了cookie有效時間,所創建的cookie被稱為“持久 cookie (persistent cookie)”。註意單位是:天;
    3.創建一個cookie並設置 cookie的有效路徑
    $.cookie(‘the_cookie‘, ‘the_value‘, { expires: 7, path: ‘/‘ });
    在默認情況下,只有設置 cookie的網頁才能讀取該 cookie。如果想讓一個頁面讀取另一個頁面設置的cookie,必須設置cookie的路徑。cookie的路徑用於設置能夠讀取 cookie的頂級目錄。將這個路徑設置為網站的根目錄,可以讓所有網頁都能互相讀取 cookie (一般不要這樣設置,防止出現沖突)。
    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數據的。當用戶關閉瀏覽器這個數據會被清除掉。
1.添加數據
$.session.set(‘key‘, ‘value‘)
2.刪除數據
$.session.remove(‘key‘);
3.獲取數據
$.session.get(‘key‘);
4.清除數據
$.session.clear();
session相對cookie更加安全一點,因為用戶只是拿到了一個session ID來讀取服務保存的配置文件,而讀取的邏輯實現狀態等是沒有辦法輕而易舉破解,這種服務器的驗證機制的。

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

深入淺出,解析cookie與session