有没有办法从Chrome扩展程序访问Cookie? 这段代码
document.cookie.length
总是返回 - 0。
答案 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内容。