当我使用此https://github.com/js-cookie/js-cookie
创建cookie时这是我的隐窝变量的内容。
s192aBszcV7NPrR8KpQbl4u/hkOOmMBzPg2mAhGlZB1/nAcus=0
然后使用js-cookie
设置cookie。.
Cookies.set('_siteauth',crypt, {
expires: 1,
path: '/'
});
这是js设置的cookie值...
s192aBszcV7NPrR8KpQbl4u/hkOOmMBzPg2mAhGlZB1/nAcus=0
因此,如果我使用php setcookie设置相同的变量。
setcookie('_siteauth', $crypt, time() + 86400, '/');
cookie的值是这个。
s192aBszcV7NPrR8KpQbl4u%2FhkOOmMBzPg2mAhGlZB1%2FnAcus%3D
我期望cookie值应该是哪个。编码。
但是js-cookie
的有关编码的文档说的是https://github.com/js-cookie/js-cookie#encoding,令我惊讶的是,所设置的js-cookie的值根本没有被编码。
请问有人可以对此进行说明吗?还是我缺少js-cookie
插件?
答案 0 :(得分:0)
该项目符合RFC 6265。 cookie名称或cookie值中不允许的所有特殊字符都使用percent-encoding用每个人的UTF-8十六进制等效符号进行编码。
[...]
请注意,默认的编码/解码策略应可互操作only between cookies that are read/written by js-cookie 。要覆盖默认的编码/解码策略,您需要使用converter。
(强调我的。)
根据RFC 6265,cookie值可以包含集合!#$%&'()*+-./:<=>?@[]^_`{|}~
中的任何字符以及数字(0-9
)和字母(a-zA-Z
)。
请注意,/
和=
都是cookie值中的有效字符。
此外,未指定编码或转义机制:
此文档未定义cookie值的语义。
为了最大程度地与用户代理兼容,服务器希望 将任意数据存储在cookie值中应对该数据进行编码, 例如,使用Base64 [RFC4648]。
对cookie值使用百分比编码是不规范的。毫不奇怪,不同的库为cookie值提供了不同的编码方案。特别是,js-cookie并非设计为与任何编码方案兼容,而是与之兼容。