每当我尝试使用chrome.cookies.get()
函数读取cookie时,我会收到以下错误:
TypeError: Cannot read property 'get' of undefined.
我在content.js文件中调用这个函数,它只能在www.example.com上运行twitter.com(这部分可以工作)。
下面是我的清单文件:
{
"manifest_version": 2,
"name": "Twitter-MultiSignin",
"description": "twiter sign in",
"version": "1.0",
"permissions": [ "cookies", "alarms" , "http://*/*", "https://*/*", "storage"],
"content_scripts": [{
"matches": ["http://twitter.com/*","https://twitter.com/*"],
"js": ["jquery.js","content.js"]
}],
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
}
}
下面是我的content.js(它总是在Twitter页面上提醒,所以工作正常):
$(function() {
alert('got here');
try{
chrome.cookies.get({ url: 'https://twitter.com', name: 'auth_token' }, function (cookie){
alert(cookie.value);
});
}catch(err){
//do nothing
alert(err);
}
try{
chrome.cookies.get({ url: 'https://twitter.com', name: 'twid' },
function (cookie) {
if (cookie) {
twid_raw = cookie.value;
twid = twid_raw.split('=')[1]
alert(twid);
}
else{
alert("not found");
}
});
}catch(err){
//do nothing
}
})
5条答案
按热度按时间c2e8gylq1#
引用docs about content scripts:
[内容脚本无法]使用chrome. * API(chrome. extension的部分除外)
因此,要使用
chrome.cookies
API,需要从后台页面执行此操作,如果需要,可以与内容脚本通信。a0zr77ik2#
如果有人跳过了这一步,请确保将“cookie”添加到权限中。
uujelgoq3#
根据jbodily的回答,缺少的部分正在添加
到舱单
jdg4fx2g4#
除上述指定的“权限”外,还必须包括“host_permissions”,如下所示:
nx7onnlm5#
我作为一个规范来回答这个问题,因为
"manifest_version": 2,
现在已经过时了。下面是一个简单的扩展,展示了如何从内容、后台和弹出窗口脚本中获取cookie。
manifest.json
:background.js
:content.js
:popup.html
:popup.js
: