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

JavaScript存储Cookie时仅保存部分数据,编码和JSON.stringify处理无效

Cookie存储内容被截断的解决方法

根因说明

  • Cookie规范对值的可使用字符有明确限制,*分号(;)、逗号(,)、空格以及各类ASCII控制字符都不允许直接出现在Cookie值中,一旦值中出现上述字符时,浏览器会自动从该字符位置截断Cookie内容,仅保留之前的部分生效。仅做JSON序列化但未做Cookie兼容的编码处理,就会出现内容截断的问题。

修复代码

依赖引入(HTML部分)

<script src="https://cdn.jsdelivr.net/npm/ua-parser-js@0.7.28/src/ua-parser.min.js"></script>

存储Cookie逻辑(JS部分)

var parser = new UAParser();
var result = parser.getResult();

console.log(result.ua);
// 序列化后先做URL编码再存入Cookie
document.cookie = "cookiename=" + encodeURIComponent(JSON.stringify(result.ua));

读取Cookie逻辑(JS部分)

function getCookie(cookieName) {
    const cookieStr = `; ${document.cookie}`;
    const cookieSegments = cookieStr.split(`; ${cookieName}=`);
    if (cookieSegments.length === 2) {
        const encodedValue = cookieSegments.pop().split(';').shift();
        return JSON.parse(decodeURIComponent(encodedValue));
    }
    return null;
}

// 调用示例
const uaInfo = getCookie('cookiename');
console.log(uaInfo);

调试参考截图

调试信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:15:01