首页 > 解决方案 > setcookie 无法存储 json

问题描述

我需要将 json 字符串保存到 cookie 中。但字符串始终是 url 编码的。

cookie 是通过 javascript 读取的,并且必须作为非 url 编码的 json 字符串接收,我无法编辑任何 js 部分。

$cs_f11 = [
    'f11_a1_p117'=>'some data',
    'f11_a2_p118'=>'some data',
    'f11_a3_p119'=>'some data'
];
setcookie('cs_f11', json_encode($cs_f11), time()+86400, '/');

如果我使用 setrawcookie() 我会收到如下错误:

Cookie 值不能包含以下任何 ',; \t\r\n\013\014' 在 […]

javascript 也将 json 写入 cookie,但所有逗号都很好。

有没有办法将 json 字符串写入非 PHP 编码的 cookie?

标签: javascriptphpjsoncookies

解决方案


按照建议,在 header() 的帮助下让它工作。

header ('Set-Cookie: cs_f1=' . json_encode($cs_f1) . '; expires=0; path=/;', false);

推荐阅读