【发布时间】:2010-11-29 04:33:51
【问题描述】:
有没有办法从 Chrome 扩展程序访问 cookie? 这段代码
document.cookie.length
总是返回 - 0。
【问题讨论】:
-
你想窃取cookies吗?
标签: javascript cookies google-chrome
有没有办法从 Chrome 扩展程序访问 cookie? 这段代码
document.cookie.length
总是返回 - 0。
【问题讨论】:
标签: javascript cookies google-chrome
如果您更改 manifest.json,您必须删除 google chrome 扩展并重新添加。
试试这些步骤:
对 manifest.json 的更改已加载。
【讨论】:
目前在扩展中获取站点 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!');
}
});
所以现在您不需要为此编写内容脚本,但不要忘记在清单中包含权限:
"permissions": [
"cookies",
"*://*.example.com/*"
]
【讨论】:
如果您希望在用户不必访问该站点的情况下操作 cookie 信息(对于像 FireFox 的 TACO 这样的东西很有用),那么您目前不走运。不过看起来谷歌正在努力:他们最近在实验性 API 中添加了一个相对完整的 cookie 处理程序: chrome.experimental.cookies
希望这将很快升级为受支持的 API。
【讨论】:
这是我第一次在这个网站上读到一些真正错误的东西。 确实可以从扩展中获取实际的文档 cookie。
你只需要在你的清单中做这两件事:
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js": ["cookie_handler.js"]
}
],
"permissions": [
"tabs",
"http://*/*",
"https://*/*"
],
您的 cookie_handler.js 将在每个加载器页面/框架/iframe 的相同上下文中执行。 尝试放一行:
alert(document.cookie);
你会看到:)
【讨论】:
cannot load javascript cookie_handler.js for content_scripts
更好的是,您可以使用 HTML5 Localstorage:
localStorage.setItem("itemid", "hello" ); // write
value = localStorage.getItem("itemid"); // read
如果您真的想读取用户正在观看的任何网站的 cookie,正如 Dan 所写,这是不可能的,因为可能会做一些非常糟糕的事情。
您可以从页面中获取的只是页面 DOM 内容。
【讨论】:
chrome.storage.local。无论如何,这是 5 年前的答案。