【问题标题】:Javascript cookie path not working as expected on iOS. Appears to be set per pageJavascript cookie 路径在 iOS 上无法按预期工作。似乎是按页面设置的
【发布时间】:2015-08-14 22:02:43
【问题描述】:

我正在尝试使用对整个域有效的 javascript 设置 cookie。这适用于除 iOS 之外的任何地方,其中 cookie 仅对其设置的页面有效。例如,通过 mydomain.com/cat/123 设置的 cookie 在尝试在 mydomain.com/cat/338 上获取时找不到

var d = new Date();
d.setTime(d.getTime() + (7*24*60*60*1000));
expires = d.toUTCString();
document.cookie = 'abc_rem=true;' +  ' expires=' + expires +'; domain=mydomain.se; path=/';

问题出现在 iOS 上的 Safari 和 Chrome 中。我试过寻找答案无济于事。我究竟做错了什么?

提前致谢!

【问题讨论】:

  • 您可以尝试在域前放置一个点,例如domain=.mydomain.se;。不知道对你有没有帮助。
  • 谢谢 Michel 我试过了,但似乎没有什么不同。
  • 您确定在 iOS 上启用了 cookie 吗?听说iOS默认有相当严格的设置,见facebook note
  • 我无法在 iOS6 上重现它。您能否提供更多信息,或者添加您用于读取 cookie 的代码?

标签: javascript ios cookies


【解决方案1】:

以下对我有用:

function setCookie() {
    var c_name = "abc_rem";
    var value = "true", exdays = 365;
    var exdate=new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
    var c=c_name + "=" + c_value + ";path=/";
    document.cookie=c;
}

这就是我之后获取 cookie 的方式

function getCookie(c_name) {
    var i,x,y,ARRcookies=document.cookie.split(";");
    var found = false;
    for (i=0;i<ARRcookies.length;i++) {
        x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
        y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
        x=x.replace(/^\s+|\s+$/g,"");
        if (x==c_name) {
            found = true;
        }
    }

    if (found) {
        // do whatever you need to do here
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-27
    • 2023-03-05
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多