Javascript Safari不保存cookie数据,但IE/FF保存?

Javascript Safari不保存cookie数据,但IE/FF保存?,javascript,browser,cookies,safari,Javascript,Browser,Cookies,Safari,我在Safari中遇到了这个奇怪的问题。我正在使用javascript将用户选择数据存储在cookie中 我使用以下代码创建cookie- document.cookie = cookieName + "=" + encodeURIComponent(cookieValue) + "; expires=" + jsDate.toGMTString(); 并使用以下方法读取该文件— var cookie = document.cookie; i

我在Safari中遇到了这个奇怪的问题。我正在使用javascript将用户选择数据存储在cookie中

我使用以下代码创建cookie-

document.cookie = cookieName +
           "=" + encodeURIComponent(cookieValue) +
           "; expires=" + jsDate.toGMTString();
并使用以下方法读取该文件—

var cookie = document.cookie;
    if(cookie.length !== 0){
         var theCookie=" "+document.cookie;
         var ind=theCookie.indexOf(" "+cookieName+"=");
         if (ind==-1) ind=theCookie.indexOf(";"+cookieName+"=");
         if (ind==-1 || cookieName=="") return "";
         var ind1=theCookie.indexOf(";",ind+1);
         if (ind1==-1) ind1=theCookie.length; 
         return unescape(theCookie.substring(ind+cookieName.length+2,ind1));}
        else { return '';}
这段代码在Firefox和IE中运行良好,但当我在Safari中访问此cookie的数据时,返回一个空字符串。奇怪的是,如果我重复选择并重试,我就可以访问数据。换句话说,我第一次访问我的站点时,cookie数据不可用,但在随后的尝试中,数据可用

要再次看到这个问题,我必须清除Safari的缓存和历史记录,并从“显示cookies”部分删除cookies,然后重新打开浏览器

另一个观察结果——当我无法读取cookie数据时,我们可以在Safari>Preferences>Security>Showcookies下查看cookie

附言:
在Safari版本4和5中遇到这个问题时,我也尝试了遍历document.cookie中的所有cookie,但也没有显示此cookie(注意-仅当我遇到此问题时),这是在
内部执行的还是什么?Safari确实不允许这样做。除此之外,Safari还有一个非常严格的cookie策略。您的代码中一定有什么东西触发了其“可能的攻击!”警报。aix,如果您在后续请求中更改cookie值,此更改是否立即反映在
document.cookie
中?只是想知道你是否总是在看前一个请求中的cookies。。。这听起来像是一个Safari bug,只有刷新页面才能解决它,但你永远不知道它听起来不是这样,但你有没有可能错误地设置它会在第一次过期?这是同一个“createCookie()”函数,在Safari中的“Show cookies”(显示cookie)下查看cookie详细信息时两次都被调用,过期日期显示正确(设置为7天后过期)