0

当我使用此https://github.com/js-cookie/js-cookie创建 cookie 时

这是我的 crypt 变量内容..

s192aBszcV7NPrR8KpQbl4u/hkOOmMBzPg2mAhGlZB1/nAcus=0


js-cookie然后用.. 设置 cookie

Cookies.set('_siteauth',crypt, {
   expires: 1,
   path: '/'
});

这是js设置的cookie值...

s192aBszcV7NPrR8KpQbl4u/hkOOmMBzPg2mAhGlZB1/nAcus=0


因此,如果我使用 php setcookie 设置相同的 var ..

setcookie('_siteauth', $crypt, time() + 86400, '/');

cookie的值是这个..

s192aBszcV7NPrR8KpQbl4u%2FhkOOmMBzPg2mAhGlZB1%2FnAcus%3D

我期望 cookie 值应该是这样的。编码。


但是js-cookie关于编码的文档说这个https://github.com/js-cookie/js-cookie#encoding,我很惊讶 set js-cookie 的值根本没有被编码。

任何人都可以对此有所了解,或者我缺少js-cookie插件的东西吗?

4

1 回答 1

1

正如js-cookie 文档所说:

该项目符合RFC 6265 。cookie-name 或 cookie-value 中不允许使用的所有特殊字符都使用percent-encoding使用每个对应的 UTF-8 Hex 进行编码。

[...]

请注意,默认的编码/解码策略只能在 js-cookie 读取/写入的 cookie 之间进行互操作。要覆盖默认的编码/解码策略,您需要使用转换器

(强调我的。)

根据RFC 6265,cookie 值可以包含集合中的任何字符!#$%&'()*+-./:<=>?@[]^_`{|}~以及数字 ( 0-9) 和字母 ( a-zA-Z)。

请注意,/=都是 cookie 值中的有效字符。

此外,没有指定编码或转义机制:

本文档未定义 cookie 值的语义。

为了最大化与用户代理的兼容性,希望在 cookie 值中存储任意数据的服务器应该对该数据进行编码,例如,使用 Base64 [ RFC4648 ]。

cookie 值的百分比编码的使用不是标准化的。不同的库为 cookie 值提出不同的编码方案也就不足为奇了。特别是,js-cookie 没有被设计为与任何编码方案兼容,而是与它自己的编码方案兼容。

于 2019-06-01T18:45:55.030 回答