iOS:javascript cookie不工作的iOS浏览器,如safari或chrome

bzzcjhmw  于 2022-12-24  发布在  iOS
关注(0)|答案(2)|浏览(170)

我正在与js工作来存储我的购物清单在cookie.it工程罚款在windows或Macintosh或安卓手机,但不能在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()。

tcomlyy6

tcomlyy61#

让我猜猜,你的cookie包含非ASCII字符?这在除iOS以外的所有环境下都能正常工作。一个解决方案是URL编码和URL解码。
另一个解决方案是使用js-cookie,它将透明地处理这个问题。

92vpleto

92vpleto2#

我可以看到这不是这种情况下的答案,但只是添加以防万一在未来对其他人有用.我发现iOS设备只会设置一个'过期'日期/时间,如果它被设置为UTC(.toUTCString())没有这个,它只会设置cookie作为会话cookie.

相关问题