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

发布于 2024-12-02 00:18:53 字数 1123 浏览 0 评论 0原文

我在 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 的缓存、历史记录并从“显示 cookie”部分删除 cookie,然后重新打开浏览器。

另一个观察结果 - 当我无法读取 cookie 数据时,当我们在 Safari > 下查看时,我们可以看到 cookie。首选项>安全>显示cookies

: 使用 Safari 版本 4 和 Safari 可以解决这个问题5

I'm stuck with this weird issue in Safari. I'm storing a user selection data in a cookie using javascript.

I create the cookie using following code -

document.cookie = cookieName +
           "=" + encodeURIComponent(cookieValue) +
           "; expires=" + jsDate.toGMTString();

and its read using -

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

This code works fine in Firefox and IE but when I access this cookie's data in Safari - an empty string is returned. The weird thing is, if i REPEAT my selection and try again, i can access the data. In other words, the first time i access my site, the cookie data is unavailable but in subsequent attempts the data is available!

To see this issue again, i have to clear Safari's cache, history and delete the cookies from the "Show cookies" section and reopen the browser.

Another observation - when i fail to read the cookie data, we can see the cookie when we look under Safari > Preferences > Security > Show cookies

ps:
facing this with Safari version 4 & 5

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文