jquery.cookie.js用法詳細解析

weixin_34007291發表於2017-11-06

最近專案需要做網站,所以我一個後臺也要負責要前端,所以最近最幾篇文章就講下我最近專案用到第三方js元件吧。

Cookie是由伺服器端生成,傳送給User-Agent(一般是瀏覽器),瀏覽器會將Cookie的key/value儲存到某個目錄下的文字檔案內,下次請求同一網站時就傳送該Cookie給伺服器(前提是瀏覽器設定為啟用cookie)。

例如購物網站儲存使用者曾經瀏覽過的產品列表,或者入口網站記住使用者喜歡選擇瀏覽哪類新聞。 在使用者允許的情況下,還可以儲存使用者的登入資訊,使得使用者在訪問網站時不必每次都鍵入這些資訊?

cookie的話其實用js也可以操作,但是為了方便,我們直接用個cookie的外掛--jQuery.Cookie.js,是一個輕量級的Cookie管理外掛。
我們可以直接用它的CDN加速下載地址,也稍微減輕下伺服器壓力吧。在http://www.bootcdn.cn/jquery-cookie/可以尋找各個版本的jquery-cookie的cdn地址。
我們直接就用最新版的吧。因為前後端沒分離,所以用的是模板引擎freemarker。
在需要使用cookie的頁面ftl新增這行程式碼引入js。

<script type="text/javascript" src="https://cdn.bootcss.com/jquery-cookie/1.4.1/jquery.cookie.js"></script>

如果是硬碟裡某個靜態的html檔案引入jquery——cookie其實也不能使用cookie。
必須要部署到伺服器才能跑,才能設定cookie。

為了實現某些功能,把一些資料儲存到使用者的本地計算機。
注意事項:同源
    1)必須是服務環境
    2)不安全 , 因為它存在了使用者的本地機器上(臨時儲存)
    3)過期時間:
        預設:  session ——  會話時間(會話結束、瀏覽器關閉,cookie消失)
    4)大小、容量 一般 4K  左右,有的瀏覽器還有條數的限制
        —— 珍貴的資源
    5)不管看到的是什麼,值都是String型別

使用方法

1.新新增一個會話 cookie:

$.cookie('the_cookie', 'the_value');

當沒有指明 cookie有效時間時,所建立的cookie有效期預設到使用者關閉瀏覽器為止

2.建立一個cookie並設定有效時間為 10天:

$.cookie('the_cookie', 'the_value', { expires: 10 });

3.建立一個cookie並設定 cookie的有效路徑:

$.cookie('the_cookie', 'the_value', { expires: 10, path: '/' });

在預設情況下,只有設定 cookie的網頁才能讀取該 cookie。如果想讓一個頁面讀取另一個頁面設

置的cookie,必須設定cookie的路徑。cookie的路徑用於設定能夠讀取 cookie的頂級目錄。將這

個路徑設定為網站的根目錄,可以讓所有網頁都能互相讀取 cookie (一般不要這樣設定,防止出現衝突) 。

關於cookie的path設定需要注意,如果不設定path:'/'的話,path則會根據目錄自動設定[如:http://www.xxx.com/user/,path會被設定為 '/user']

4.讀取cookie:

$.cookie('the_cookie'); // cookie存在 => 'the_value' 

$.cookie('not_existing'); // cookie不存在 => null

6.修改一個cookie 的值

設定方法一樣:  
    $.cookie('name','新的value',{
        path: //  如果當前程式的path和cookie的path不一致,那麼這裡一定要指定path引數
    });

6.刪除cookie,通過傳遞null作為cookie的值即可:
這種刪除方式的話,如果到時用$.cookie('the_cookie');獲取的是“null”的字串,如果後臺使用@CookieValue獲取cookie,那麼獲取的cookie的值為“null”的字串,這個“null”字串後臺處理要特別注意

$.cookie('the_cookie', null);
4428238-83e1bd57cb3a2fd6.png
$.cookie('the_cookie', null);
4428238-3dd968d1677b9df5.png
$.cookie('the_cookie', null);

使用$.cookie("token", { expires: -1 })刪除cookie,會出現這情況。

$.cookie("token", { expires: -1 })
4428238-ec977a9e52086738.png
使用$.cookie("token", { expires: -1 })

4428238-8ed7809b922ad12d.png
使用$.cookie("token", { expires: -1 })

其他說明

1.expires: 365

定義cookie的有效時間,值可以是一個數字(從建立cookie時算起,以天為單位)或一個Date 對

象。如果省略,那麼建立的cookie是會話cookie,將在使用者退出瀏覽器時被刪除。

2.path: '/'

預設情況:只有設定cookie的網頁才能讀取該cookie。

定義cookie的有效路徑。預設情況下, 該引數的值為建立 cookie 的網頁所在路徑(標準瀏覽器的行為) 。

如果你想在整個網站中訪問這個cookie需要這樣設定有效路徑:path: '/'。如果你想刪除一個定義

了有效路徑的 cookie,你需要在呼叫函式時包含這個路徑:$.cookie('the_cookie', null,

{ path: '/' });。 domain: 'example.com'

預設值:建立 cookie的網頁所擁有的域名。

3.secure: true

預設值:false。如果為true,cookie的傳輸需要使用安全協議(HTTPS)。

4.raw: true

預設值:false。

預設情況下,讀取和寫入 cookie 的時候自動進行編碼和解碼(使用encodeURIComponent 編碼,

decodeURIComponent 解碼)。要關閉這個功能設定 raw: true 即可。

。######參考文章:
http://www.jianshu.com/p/eb8ca0e991fc
http://www.jb51.net/article/44557.htm
http://www.cnblogs.com/qiao20/p/5729447.html

相關文章