cookie的使用早已不新鮮了,但是最近在做項目時還是被坑了一把。
那么接下來讓我們來看一下這個“坑”是個什么情況!
前提:
1.現在有兩個頁面A.html, B.html,同時,這兩個頁面中共同嵌入了頁面C.html
2.在iframe中使用cookie
3.iframe中的頁面並不跨域(即A、B、C為同域)
4.ie8情況下
現象:
當在A中的C頁面儲存cookie,然后在去B中的C頁面讀取這個cookie,這時會發現讀取不到(偶現,不是必現)。
這里稍微抱怨一下,這種偶現的情況實在坑爹,如果是必現反倒是好查了,這個問題查了我好幾個小時,最后只好去C盤下查看存cookie的文件(如果寫cookie時沒有指定過期時間是不會生成cookie文件的,只會在緩存中,瀏覽器一關這個cookie就被清除了)。
解決方案:
通過查看cookie文件,我才發現有時候寫入的cookie路徑是C頁面的路徑,有時候又是B頁面的(應該是iframe嵌套的緣故導致的)。
因為cookie的路徑不同,就相當於不同的cookie了,而在讀取cookie時往往只能讀到當前頁面路徑下的cookie值,所以在A中的C頁面是無法讀到B頁面中的cookie的。
於是我的解決方案是,在寫cookie時主動添加路徑,避免C頁面寫cookie時一會寫自己的路徑,一會寫B頁面的路徑。
demo如下:
$.cookie('readme', '這里使用了jq的插件', {path : '/sub/C'});
