使用bookmarklet阅读Cookie

时间:2014-02-06 18:24:40

标签: javascript session-cookies bookmarklet cross-domain-policy

我正在开发一个帮助用户共享图片的书签。在验证此人时,我需要阅读域设置的cookie: www.xxx.com

bookmarklet JavaScript由 bookmarklet.xxx.com 提供,但由于此JavaScript在调用bookmarklet的网站上呈现,因此它只访问该网站的cookie而不是由 www.xxx.com

我已经研究了它并根据SO的一些答案,这是一个安全问题,因此无法访问来自其他域的cookie。

我尝试在 www.xxx.com/iframe/iframe.html 呈现的隐藏的iframe 中执行我的脚本,它确实访问了Cookie,但问题是这个脚本无法将值传递给我的bookmarklet脚本。我无法访问Iframe DOM,这是另一个安全问题。

请建议一个合适的方式,以便我可以解决这个问题。

1 个答案:

答案 0 :(得分:1)

您可以使用postMessage将iframe中的信息传回您的网页。

发送消息:

windowReference.postMessage("The user is 'bob' and the password is 'secret'",
              "https://secure.example.net");

阅读信息

window.addEventListener("message", receiveMessage, false);

function receiveMessage(event)
{
  if (event.origin !== "http://example.org:8080")
    return;

  // ...
}