一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

javascript快速入門20

 橘子悅讀 2013-12-02

Cookie 基礎(chǔ)知識

我們已經(jīng)知道,在 document 對象中有一個(gè) cookie 屬性。但是 Cookie 又是什么?“某些 Web 站點(diǎn)在您的硬盤上用很小的文本文件存儲了一些信息,這些文件就稱為 Cookie。”—— MSIE 幫助。一般來說,Cookies 是 CGI 或類似,比 HTML 高級的文件、程序等創(chuàng)建的,但是 JavaScript 也提供了對 Cookies 的很全面的訪問權(quán)利。

在繼續(xù)之前,我們先要學(xué)一學(xué) Cookie 的基本知識。

每個(gè) Cookie 都是這樣的:cookie名=cookie值;cookie本身僅僅是一個(gè)字符串,是一組名值對;多組名值對用分號加空格分隔!

"cookie名"的限制與 JavaScript 的命名限制大同小異,少了“不能用 JavaScript 關(guān)鍵字”,多了“只能用可以用在 URL 編碼中的字符”。后者比較難懂,但是只要你只用字母和數(shù)字命名,就完全沒有問題了?!爸怠钡囊笠彩恰爸荒苡每梢杂迷?URL 編碼中的字符”。

每個(gè) Cookie 都有失效日期,一旦電腦的時(shí)鐘過了失效日期,這個(gè) Cookie 就會被刪掉。我們不能直接刪掉一個(gè) Cookie,但是可以用設(shè)定失效日期早于現(xiàn)在時(shí)刻的方法來間接刪掉它。

每個(gè)網(wǎng)頁,或者說每個(gè)站點(diǎn),都有它自己的 Cookies,這些 Cookies 只能由這個(gè)站點(diǎn)下的網(wǎng)頁來訪問,來自其他站點(diǎn)或同一站點(diǎn)下未經(jīng)授權(quán)的區(qū)域的網(wǎng)頁,是不能訪問的。每一“組”Cookies 有規(guī)定的總大?。ù蠹s 2KB 每“組”),一超過最大總大小,則最早失效的 Cookie 先被刪除,來讓新的 Cookie“安家”。

訪問Cookie

    document.write(document.cookie);//輸出類似"name1=value1; name2=value2; name3=value3"的字符串
    document.write(typeof document.cookie);//cookie僅僅是個(gè)字符串

 

但這樣獲取到的是一堆混亂的字符串,必須對其進(jìn)行處理才能知道它的含義!在類似ASP或PHP這樣的服務(wù)器端腳本中,往往設(shè)置cookie十分簡單

    //ASP
    response.cookies("cookieName")="cookieValue"
    //PHP
    setcookie("cookieName","cookieValue");

 

解析Cookie名值對

方案一:直接截取字符串

復(fù)制代碼
    function getCookie(cookieName) {
        var start = document.cookie.indexOf(cookieName+"=");
        if (start ==-1) {return "";}
        start = start+cookieName.length+1;
        var end = document.cookie.indexOf(";",start);
        if (end=-1) {end = document.cookie.length;}
        return document.cookie.substring(start,end);
    }
復(fù)制代碼

 

方案二:將Cookie拆分為數(shù)組,通過遍歷取得

復(fù)制代碼
    function getCookie(cookieName) {
        var cookies=document.cookie.split("; ");//一個(gè)分號加一個(gè)空格
        if (!cookies.length) {return "";}
        var pair=["",""];
        for (var i=0;i< cookies.length;i++) {
            pair = cookies[i].split("=");//以賦值號分隔,第一位是Cookie名,第二位是Cookie值
            if (pair[0]==cookieName) {
                break;
            }
        }
        return pair[1];
    }
復(fù)制代碼

 

方案三:使用正則表達(dá)式解析

    function getCookie(cookieName) {
        var re = new RegExp("\\b"+cookieName+"=([^;]*)\\b");
        var arr =  re.exec(document.cookie);
        return arr?arr[1]:"";
    }

 

設(shè)置Cookie

一個(gè)Cookie包含以下信息:

  • Cookie名稱,Cookie名稱必須使用只能用在URL中的字符,一般用字母及數(shù)字
  • Cookie值,Cookie值同樣也只能使用可以用在URL中的字符,一般需要在設(shè)置Cookie值時(shí)對其使用encodeURI方法進(jìn)行轉(zhuǎn)義
  • Expires,過期日期,一個(gè)GMT格式的時(shí)間,當(dāng)過了這個(gè)日期之后,瀏覽器就會將這個(gè)Cookie刪除掉,當(dāng)不設(shè)置這個(gè)的時(shí)候,Cookie在瀏覽器關(guān)閉后消失
  • Path,一個(gè)路徑,在這個(gè)路徑下面的頁面才可以訪問該Cookie,一般設(shè)為“/”,以表示同一個(gè)站點(diǎn)的所有頁面都可以訪問這個(gè)Cookie
  • Domain,子域,指定在該子域下才可以訪問Cookie,例如要讓Cookie在bbs.x-life.com下可以訪問,但在news.x-life.com下不能訪問,則可將domain設(shè)置成bbs.x-life.com
  • Secure,安全性,指定Cookie是否只能通過https協(xié)議訪問,一般的Cookie使用HTTP協(xié)議既可訪問,如果設(shè)置了Secure(沒有值),則只有當(dāng)使用https協(xié)議連接時(shí)cookie才可以被頁面訪問

注意:Cookie安全機(jī)制要求站點(diǎn)頁面只能訪問本站點(diǎn)的Cookie,不能訪問其它站點(diǎn)的Cookie。同時(shí),最好在設(shè)置Cookie時(shí)使用encodeURI對象進(jìn)行URI編碼,在取出Cookie時(shí)再使用decodeURI對其進(jìn)行解碼!

設(shè)置一個(gè)完整Cookie示例

    var expires = new Date();
    expires.setMonth(expires.getMonth()+1);//一個(gè)月后Cookie失效
    document.cookie = "userName="+encodeURI("用戶名")+"; expires="+
    expires.toGMTString()+"; path=/; domain=x-life.com; secure";

 

每次設(shè)置document.cookie值時(shí)如果該Cookie名稱并不存在,則新增一個(gè)Cookie,如果已經(jīng)存在,則修改以前的值!

    document.cookie ="a=1";//新增一個(gè)名稱為a的Cookie
    document.cookie = "b=2";//新增一個(gè)名稱為b的Cookie,原來的Cookie安然無恙
    document.cookie = "a=3";//將原來的名稱為a的Cookie值修改為3

 

setCookie函數(shù)

復(fù)制代碼
    function setCookie(name,value,expires,domain,secure) {
        var str = name+"="+encodeURI(value);//不要忘了在對應(yīng)getCookie函數(shù)里面加上decodeURI方法
        if (expires) {
            str += "; expires="+expires.toGMTString();
        }
        if (path) {
            str += "; path="+path;
        }
        if (domain) {
            str += "; domain="+domain;
        }
        if (secure) {
            str += "; secure";
        }
        document.cookie = str;
    }
復(fù)制代碼

 

刪除Cookie

沒有刪除Cookie的直接的方法,但可以變通一下來刪除Cookie!

    function delCookie(cookieName) {
        var expires = new Date();
        expires.setTime(expires.getTime()-1);//將expires設(shè)為一個(gè)過去的日期,瀏覽器會自動(dòng)刪除它
        document.cookie = cookieName+"=; expires="+expires.toGMTString();
    }

 

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产高清视频一区不卡| 欧美日韩在线视频一区| 风间中文字幕亚洲一区| 久久久免费精品人妻一区二区三区 | 国产成人午夜av一区二区| 国产又猛又大又长又粗| 国产午夜福利片在线观看| 亚洲伦片免费偷拍一区| 91精品国产av一区二区| 精品久久少妇激情视频| 精品国产91亚洲一区二区三区| 大屁股肥臀熟女一区二区视频| 国产水滴盗摄一区二区| 乱女午夜精品一区二区三区| 欧美国产日本高清在线| 亚洲中文字幕综合网在线| 99热中文字幕在线精品| 欧美日韩国产自拍亚洲| 亚洲国产一区精品一区二区三区色| 亚洲欧洲一区二区中文字幕| 国产又大又硬又粗又湿| 九九热这里有精品20| 国产成人精品一区二区在线看| 亚洲男人的天堂久久a| 精品日韩中文字幕视频在线| 午夜国产精品国自产拍av| 久草视频这里只是精品| 日韩中文字幕视频在线高清版| 日韩视频在线观看成人| 99久久精品午夜一区| 在线免费观看一二区视频| 久久精品偷拍视频观看| 国产亚洲中文日韩欧美综合网| 99久久无色码中文字幕免费| 日韩一级毛一欧美一级乱| 欧美整片精品日韩综合| 成人精品国产亚洲av久久| 亚洲男人的天堂就去爱| 2019年国产最新视频| 亚洲欧美日韩中文字幕二欧美| 国产精品一区日韩欧美|