在iframe中使用cookie需要注意

时间:2023-01-26 14:50:28

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