You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Safari浏览器无法完整保存JSON格式Cookie值问题咨询

解决Safari中Cookie存储JSON字符串被截断的问题

问题根源

Safari对Cookie值的字符处理逻辑比其他浏览器更严苛,未编码的JSON字符串里的特殊字符(比如引号、转义序列等)会触发Safari的Cookie解析提前终止,导致仅保存部分内容。

可行解决方法

1. 对JSON字符串做URL编码

存储Cookie时,用encodeURIComponent()对JSON.stringify()的结果进行编码,确保所有特殊字符被正确转义,避免Safari解析中断:

// 存储Cookie
document.cookie = 'my_cookie=' + encodeURIComponent(JSON.stringify(my_json)) + '; max-age=3600; path=/';

// 读取并解析Cookie
const cookieMatch = document.cookie.match(/(^|;)\\s*my_cookie\\s*=\\s*([^;]+)/);
if (cookieMatch) {
  const decodedValue = decodeURIComponent(cookieMatch[2]);
  const myJson = JSON.parse(decodedValue);
  // 后续使用解析后的JSON对象
}

2. 校验JSON内容合法性

确保原始my_json是标准JSON对象,不包含未转义的控制字符(如换行、制表符)或非法值。虽然JSON.stringify()会处理大部分场景,但如果原始对象存在非法内容,可能生成不符合Safari要求的字符串。

3. 检查Cookie容量限制

单个Cookie的最大容量通常为4KB,若JSON字符串长度接近或超出这个阈值,也会导致截断。可以通过JSON.stringify(my_json).length查看字符串长度,若超限制,可考虑拆分数据到多个Cookie,或改用localStorage/sessionStorage存储(无需跨域名或后端读取的场景下)。


内容的提问来源于stack exchange,提问作者B23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 18:25:28