我正在使用js将我的购物清单存储在 cookie.it 中,在Windows或Macintosh或Android手机上工作正常,但在iPhone移动浏览器(safari和chrome(上不起作用.在食物页面中,我将食物添加到我的列表中,刷新页面或重定向到其他页面后,cookie为空。
我已经尝试了两种方法来编写cookie,并且还使用了cookie参数,但问题仍然存在。
这是我设置 cookie 的代码:
function bake_cookie(name, value) {
var date,
date = new Date();
date.setTime(date.getTime()+(30*24*60*60*1000));
var cookie = [name, '=', JSON.stringify(value), '; domain=', "", ';
path=','/; expires='+date.toUTCString()+"';"].join('');
document.cookie = cookie;
}
我的值是一个对象数组,如下所示:
[
{
count: 3
food_id: 2
kitchen_name: "kitchen 1"
pic: "url"
title: "food 1"
total_price: 21000
unit_price: 7000
},
{
count: 5
food_id: 7
kitchen_name: "kitchen 2"
pic: "url"
title: "food 2"
total_price: 25000
unit_price: 5000
},...
]
为了先更新它,我删除了这样的cookie:
function delete_cookie(name) {
document.cookie = [name, '=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/;
domain=', ""].join('');
}
然后我用新的输入调用 bake_cookie((。
让我猜猜,您的 cookie 包含非 ASCII 字符?这在所有环境中都运行良好,但在iOS上除外。解决方案是 URL 编码和 URL 解码。
另一种解决方案是使用 js-cookie,它将透明地处理这个问题。
我可以看到这不是这种情况的答案,而只是添加以防万一对将来对其他人有用。我发现iOS设备只有在设置为UTC(.toUTCString(((时才会设置"过期"日期/时间,如果没有这个,它只会将cookie设置为会话cookie。
就我而言,问题是路径设置不正确。它在桌面上工作正常,但在iOS版Chrome上不起作用。
以下方法不起作用:
path=https://example.com/path
更改为以下内容修复了此问题:
path=/path