国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

為什么網站的cookie有時候獲取不到?

BingqiChen / 2847人閱讀

摘要:例如,如果沒有定義,默認為當前文檔位置的路徑的域名部分。與早期規范相反的是,在域名前面加符將會被忽視,因為瀏覽器也許會拒絕設置這樣的。

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

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

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

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

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

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

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

;expires=date-in-GMTString-format 如果沒有定義,cookie會在對話結束時過期

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

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

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

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


但是這里也有一個規則,就是子文件夾下的頁面可以訪問上級頁面存下的cookie,但父級文件夾的頁面訪問不到子文件夾下的頁面創建的cookie;
所以,通常我們在設置cookie的時候,可以統一把path設置為/
下面附cookie的CRUD代碼:

var cookie = {
        /**
         * 設置cookie
         * @param name cookie的名稱
         * @param value cookie的值
         * @param day cookie的過期時間
         */
        setCookie: function (name, value, day) {
            if (day !== 0) {     //當設置的時間等于0時,不設置expires屬性,cookie在瀏覽器關閉后刪除
                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=/";
            }
        },
        /**
         * 獲取對應名稱的cookie
         * @param name cookie的名稱
         * @returns {null} 不存在時,返回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);
        }
    }

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/54090.html

相關文章

  • 什么網站cookie時候獲取不到

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

    Ali_ 評論0 收藏0
  • Servlet第五篇【介紹會話技術、CookieAPI、詳解、應用】

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

    binaryTree 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<