【问题标题】:reading my own domain cookies as a third party作为第三方读取我自己的域 cookie
【发布时间】:2014-07-21 13:54:32
【问题描述】:

我现在快疯了,我花了一天时间做一些本不应该花费的事情。

我在我的 Compoundjs 网站(在服务器上)上执行以下操作

   var cookie = req.cookies.my_user;
   if(!cookie){
       console.log("not user");
       res.cookie('my_user',  user._id, {maxAge: 900000, httpOnly: false });
   }

我以 localhost:3000 身份运行该站点

当我从某个页面运行以下书签时,我无法控制

var link = document.createElement("link");
link.type = "text/css";
link.rel = "stylesheet";
link.href =  "//localhost:3000/bookmarklet/bookmarklet.css";
var head = document.getElementsByTagName("head"); 
head[0].appendChild(link);
var script = document.createElement('script');
script.src = "//localhost:3000/bookmarklet/bookmarklet.js";
head[0].appendChild(script);

在bookmarklet.js里面我做

console.log(document.cookie);

我没有设置的 cookie。

显然我应该有权访问,因为脚本是从与我的 cookie 设置相同的域提供的。

我查看从该页面提供的实际 html 文档并打开控制台并执行 console.log(document.cookie) 我看到了我的 cookie,但如果我在写入文档的 javascript 内部执行则看不到.

换句话说,它的行为就像是我设置的会话 cookie,尽管它不应该是我理解的那样。

【问题讨论】:

  • 当我在其他网站上查看脚本中的 document.cookies 时,它会显示以下内容:CFID=141701010; CFTOKEN=5599abd5d67ae4a4-7C095B6D-9CD9-D5A9-300B140A02F494F9; __qca=P0-285957599-1404239672015; __utma=1.1407759513.1404239672.1405887047.1405948443.68; __utmz=1.1404239672.1.1.utmcsr=(直接)|utmccn=(直接)|utmcmd=(无); __utmv=1.|1=用户%20类型=非成员=1; _cb_ls=1; _chartbeat2=BL1dzWBm0jTrC6undF.1403386051352.1405951394845.1111100011111111; _chartbeat_uuniq=3; __utmb=1.4.10.1405948443; __utmc=1
  • 当我查看我网站上的文档 cookie 时,它​​显示 session=s%3Amy_user%3D53cad14d351ac8941752a278.fxNTCK5j3%2BMs0y3O%2FEons%2F9RaTY%2FY5HaPuXMw9ZhzEE; my_user=j%3A%2253cad14d351ac8941752a278%22
  • chartbeat 当然是 chartbeat 设置的 cookie,但据我所知,在我们的 node.js 站点中没有使用它,但为什么我应该能够将其作为文档的一部分阅读.cookie 由 localhost:3000 提供的脚本访问

标签: javascript cookies compoundjs


【解决方案1】:

我觉得你设置cookie的方式肯定有问题...我建议你使用cookielibraries just like this one(如果你已经在使用jQuery),这样你就可以这样设置cookie:

$.setCookie("key","value",7); // expires in one week
Cookie = $.getCookie("key"); // it gets you cookie
$.removeCookie("key"); // to remove your cookie

你还有很多其他选项可以处理 cookie,比如获取所有 cookie 或清除所有 cookie 等等......

【讨论】:

  • 不,cookie 正在服务器上设置。在看到您的回复以消除困惑后,我编辑了我的问题以反映这一点。
【解决方案2】:

显然我应该有权访问,因为脚本是从与我的 cookie 设置相同的域提供的。

也许不是那么明显。脚本使用加载它们的页面的权限运行,而不是加载它们的位置。也就是说,提供脚本的域是无关紧要的——唯一重要的位置是浏览器位置栏中的位置(或者名义上的位置栏,如果它是一个框架)。

【讨论】:

    猜你喜欢
    • 2010-10-16
    • 2021-05-01
    • 1970-01-01
    • 2019-04-17
    • 2020-09-08
    • 2021-11-14
    • 2012-08-19
    • 1970-01-01
    • 2021-04-16
    相关资源
    最近更新 更多