成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

為什么網(wǎng)站的cookie有時(shí)候獲取不到?

BingqiChen / 3061人閱讀

摘要:例如,如果沒有定義,默認(rèn)為當(dāng)前文檔位置的路徑的域名部分。與早期規(guī)范相反的是,在域名前面加符將會(huì)被忽視,因?yàn)闉g覽器也許會(huì)拒絕設(shè)置這樣的。

工作中有好多同事問我,那個(gè)誰,為什么我用網(wǎng)上封裝的獲取cookie的方法卻獲取不到自己網(wǎng)站上的cookie呢?

這個(gè)問題,我們還要從document.cookie說起(其實(shí)網(wǎng)上封裝的獲取cookie的方法里面也是用的這個(gè)方法),
MDN上給的文檔:

注意,這里給出的解釋是獲取所有可從此位置訪問到的cookie;

不著急,咱們繼續(xù)往下看;
這是文檔里給出的屬性值;

;path=path (例如 "/", "/mydir") 如果沒有定義,默認(rèn)為當(dāng)前文檔位置的路徑。

;domain=domain (例如 "example.com", "subdomain.example.com") 如果沒有定義,默認(rèn)為當(dāng)前文檔位置的路徑的域名部分。與早期規(guī)范相反的是,在域名前面加 . 符將會(huì)被忽視,因?yàn)闉g覽器也許會(huì)拒絕設(shè)置這樣的cookie。如果指定了一個(gè)域,那么子域也包含在內(nèi)。

;max-age=max-age-in-seconds (例如一年為606024*365)

;expires=date-in-GMTString-format 如果沒有定義,cookie會(huì)在對(duì)話結(jié)束時(shí)過期

;secure (cookie只通過https協(xié)議傳輸)

其實(shí)造成取不到值得主要原因就是path這個(gè)屬性,
這里的path屬性是指你可以從xxx.xxx.com/xxx/x中訪問到cookie(當(dāng)時(shí)是在這個(gè)頁面設(shè)置的cookie),但在xxx.xxx.com這個(gè)目錄下是訪問不到cookie的;

這就相當(dāng)于你在A店里定了一盒曲奇餅干,但你去B店拿,顯然是拿不到的。

在瀏覽器中也可以很方便很直觀的看到區(qū)別:


但是這里也有一個(gè)規(guī)則,就是子文件夾下的頁面可以訪問上級(jí)頁面存下的cookie,但父級(jí)文件夾的頁面訪問不到子文件夾下的頁面創(chuàng)建的cookie;
所以,通常我們?cè)谠O(shè)置cookie的時(shí)候,可以統(tǒng)一把path設(shè)置為/
下面附cookie的CRUD代碼:

var cookie = {
        /**
         * 設(shè)置cookie
         * @param name cookie的名稱
         * @param value cookie的值
         * @param day cookie的過期時(shí)間
         */
        setCookie: function (name, value, day) {
            if (day !== 0) {     //當(dāng)設(shè)置的時(shí)間等于0時(shí),不設(shè)置expires屬性,cookie在瀏覽器關(guān)閉后刪除
                var expires = day * 24 * 60 * 60 * 1000;
                var date = new Date(+new Date() + expires);
                document.cookie = name + "=" + escape(value) + ";expires=" + date.toUTCString()+";path=/";
            } else {
                document.cookie = name + "=" + escape(value)+";path=/";
            }
        },
        /**
         * 獲取對(duì)應(yīng)名稱的cookie
         * @param name cookie的名稱
         * @returns {null} 不存在時(shí),返回null
         */
        getCookie: function (name) {
            var arr;
            var reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
            if (arr = document.cookie.match(reg))
                return unescape(arr[2]);
            else
                return null;
        },
        /**
         * 刪除cookie
         * @param name cookie的名稱
         */
        delCookie: function (name) {
            this.setCookie(name, " ", -1);
        }
    }

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/54090.html

相關(guān)文章

  • 什么網(wǎng)站cookie時(shí)候獲取不到?

    摘要:例如,如果沒有定義,默認(rèn)為當(dāng)前文檔位置的路徑的域名部分。與早期規(guī)范相反的是,在域名前面加符將會(huì)被忽視,因?yàn)闉g覽器也許會(huì)拒絕設(shè)置這樣的。 工作中有好多同事問我,那個(gè)誰,為什么我用網(wǎng)上封裝的獲取cookie的方法卻獲取不到自己網(wǎng)站上的cookie呢? 這個(gè)問題,我們還要從document.cookie說起(其實(shí)網(wǎng)上封裝的獲取cookie的方法里面也是用的這個(gè)方法),MDN上給的文檔:sho...

    Ali_ 評(píng)論0 收藏0
  • Servlet第五篇【介紹會(huì)話技術(shù)、CookieAPI、詳解、應(yīng)用】

    摘要:保存中文上面我們的例子保存的是英文字符,下面我們來看下保存中文字符會(huì)怎么樣。出異常了中文屬于字符,英文數(shù)據(jù)字符,中文占個(gè)字符或者個(gè)字符,英文占個(gè)字符。如果為,則表示刪除該。的值規(guī)定為域名的隱私安全機(jī)制決定是不可跨域名的。 什么是會(huì)話技術(shù) 基本概念: 指用戶開一個(gè)瀏覽器,訪問一個(gè)網(wǎng)站,只要不關(guān)閉該瀏覽器,不管該用戶點(diǎn)擊多少個(gè)超鏈接,訪問多少資源,直到用戶關(guān)閉瀏覽器,整個(gè)這個(gè)過程我們稱為一...

    binaryTree 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<