在iframe中使用cookie需要注意


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'});


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM