从Google Chrome扩展程序访问Cookie

时间:2009-09-17 14:52:52

标签: javascript cookies google-chrome

有没有办法从Chrome扩展程序访问Cookie? 这段代码

document.cookie.length

总是返回 - 0。

5 个答案:

答案 0 :(得分:26)

这是我第一次在这个网站上看到一些非常错误的东西。 从扩展中获取实际文档cookie可能 INDEED

你只需要清单中的这两件事:

"content_scripts": [
    {
      "matches": ["http://*/*", "https://*/*"],
      "js": ["cookie_handler.js"]
    }
  ],
  "permissions": [
    "tabs",
    "http://*/*",
    "https://*/*"
  ],

你的cookie_handler.js将在每个loader页面/ frame / iframe的相同上下文中执行。 试着把它放在一行:

alert(document.cookie);

你会看到:)

答案 1 :(得分:21)

目前,在扩展程序中获取网站Cookie的最佳(最简单)方式是:

chrome.cookies.get({ url: 'http://example.com', name: 'somename' },
  function (cookie) {
    if (cookie) {
      console.log(cookie.value);
    }
    else {
      console.log('Can\'t get cookie! Check the name!');
    }
});

现在你不需要这个的内容脚本,但不要忘记在manifest中包含权限:

"permissions": [
  "cookies",
  "*://*.example.com/*"
]

答案 2 :(得分:5)

我做了一些关于如何处理它的帖子,还解释了如何将cookie信息输入到你的后台脚本中。

https://vicinitysoftware.com/accessing-site-cookies-from-chrome.html

答案 3 :(得分:3)

如果您希望在用户不必访问该网站的情况下操纵cookie信息(对FireFox的TACO之类的内容很有用),那么您目前运气不佳。看起来谷歌正在研究它:他们最近为实验API添加了一个相对完整的cookie处理程序: chrome.experimental.cookies

希望这将很快升级到支持的API。

答案 4 :(得分:-3)

更好的是,您可以使用HTML5 Localstorage:

localStorage.setItem("itemid", "hello" );   // write
value = localStorage.getItem("itemid");     // read

如果你真的想阅读用户正在观看的任何网站的cookie,就像Dan写的那样,这是不可能的,因为真的很糟糕。

您可以从页面获取的只是页面DOM内容。