关于$.cookie几个问题,希望能够得到大家的帮助,谢谢大家!

    $.cookie('sid', "1", {path: '/', domain: "cg.com"});// 根域名
    $.cookie('sid', "2", {path: '/', domain: "test.cg.com"});//子域名
    $.cookie('sid', "3", {path: '/'});//默认domain, 官方文档:Default: domain of page where the cookie was created.


    $.removeCookie('sid', {path: '/', domain: "cg.com"});
    $.removeCookie('sid', {path: '/', domain: "test.cg.com"});
    $.removeCookie('sid', {path: '/'});

    sid1 = $.cookie('sid', {path: '/', domain: "cg.com"});
    sid2 = $.cookie('sid', {path: '/', domain: "test.cg.com"});
    sid3 = $.cookie('sid', {path: '/'});

    sid = $.cookie('sid');

    console.log(document.cookie); //=>   sid=1; sid=2; sid=3  问题1
    console.log(sid); //=> 1 问题2
    console.log(sid1); //=> sid=%5Bobject%20Object%5D 问题3
    console.log(sid2); //=> sid=%5Bobject%20Object%5D
    console.log(sid3); //sid=%5Bobject%20Object%5D
问题1:为什么cookie还存在,前面不是已经删除了吗
问题2:为什么是1而不是2或者3
问题3:为什么是"sid=1; path=/; domain=cg.com"字符串,而不是value值,我该如何得到value值?
阅读 3.1k
1 个回答

答案1:下面的语句是 写入Cookie语句。你已经在console.log之前 又执行了一遍写入

$.cookie('sid', "1", {path: '/', domain: "cg.com"});

答案2:根据域名权重,当前域名的Cookie > 根域名 > 无域名

  • 当你访问的域名是test.cg.com时,domain=test.cg.com匹配的优先级最高。

  • 但是根据结果反馈,您访问的应该不是这个域名,所以系统只能调取到根域名的结果,

  • 其次,根据cookie的安全性,是没有权限写入/读取 跨域cookie的

  • 所以你最终返回了1

答案3:读取语句是(没有第二个参数)

    $.cookie('name');

sid1,sid2 不是得到的cookie结果,而是cookie的RAW语句,和值没有关系。
并且,是否写入成功也不一定。

总结:
由于没有权限读取、写入其它域名的cookie,所以你想操作其他域名下的cookie是不可能的。

推荐问题