我现在一直在尝试各种各样的事情,但无法让它发挥作用.我想要所有与当前标签相关的cookie(也就是那些在不同域上的那些,例如google).以下仅为我提供了与标签域匹配的内容.设置getAll({})为我提供了与访问过的任何页面相关的所有cookie.
document.addEventListener('DOMContentLoaded', function () { var cookies2=[]; chrome.tabs.query({currentWindow:true,active:true},function(tab) { console.log(tab[0]); chrome.cookies.getAll({url:tab[0].url},function(cookies) { for (var i in cookies) { console.log(cookies[i].domain,cookies[i].path,cookies[i].name); } }); }); });
Rob W.. 6
"与当前标签相关的所有Cookie"究竟是什么意思?
通过网络加载的任何资源都可以与cookie相关联.如果您只想获取选项卡中所有帧的cookie,请使用该chrome.webNavigation.getAllFrames
方法获取与选项卡关联的URL列表.这是获取所有cookie的一种非常天真的方法.
chrome.tabs.query({ currentWindow: true, active: true }, function(tabs) { chrome.webNavigation.getAllFrames({ tabId: tabs[0].id }, function(details) { // Get unique list of URLs var urls = details.reduce(function(urls, frame) { if (urls.indexOf(frame.url) === -1) urls.push(frame.url); return urls; }, []); // Get all cookies var index = 0; var cookies = []; urls.forEach(function(url) { chrome.cookies.getAll({ url: url }, function(additionalCookies) { cookies = cookies.concat(additionalCookies); if (++index === urls.length) { // Collected all cookies! // TODO: Use cookies. // Note: The array may contain duplicate cookies! } }); // chrome.cookies.getAll }); // urls.forEach }); // chrome.webNavigation.getAllFrames }); // chrome.tabs.query
以前的方法是幼稚的,因为得到的饼干阵列可能包含重复的条目(例如,如果页面包含http://example.com
和http://example.com/index.htm
,然后你会得到一个cookie的两个条目.example.com
).
有许多方法可以在JavaScript数组中过滤重复项,您可以在此问题中看到一些方法.
如果您希望逐字地获取与选项卡关联的所有cookie,则需要使用chrome.webRequest
API 收集它们.使用webRequest
事件来检测网络请求以及Cookie
请求标头Set-Cookie
和Set-Cookie2
响应标头.您必须手动解析cookie.
如果您想快速查看与选项卡关联的所有cookie(仅限框架,如第一种方法),您还可以打开开发人员工具并查看参考资料 - > Cookies).
(图片来源:https://developers.google.com/chrome-developer-tools/docs/resources)
"与当前标签相关的所有Cookie"究竟是什么意思?
通过网络加载的任何资源都可以与cookie相关联.如果您只想获取选项卡中所有帧的cookie,请使用该chrome.webNavigation.getAllFrames
方法获取与选项卡关联的URL列表.这是获取所有cookie的一种非常天真的方法.
chrome.tabs.query({ currentWindow: true, active: true }, function(tabs) { chrome.webNavigation.getAllFrames({ tabId: tabs[0].id }, function(details) { // Get unique list of URLs var urls = details.reduce(function(urls, frame) { if (urls.indexOf(frame.url) === -1) urls.push(frame.url); return urls; }, []); // Get all cookies var index = 0; var cookies = []; urls.forEach(function(url) { chrome.cookies.getAll({ url: url }, function(additionalCookies) { cookies = cookies.concat(additionalCookies); if (++index === urls.length) { // Collected all cookies! // TODO: Use cookies. // Note: The array may contain duplicate cookies! } }); // chrome.cookies.getAll }); // urls.forEach }); // chrome.webNavigation.getAllFrames }); // chrome.tabs.query
以前的方法是幼稚的,因为得到的饼干阵列可能包含重复的条目(例如,如果页面包含http://example.com
和http://example.com/index.htm
,然后你会得到一个cookie的两个条目.example.com
).
有许多方法可以在JavaScript数组中过滤重复项,您可以在此问题中看到一些方法.
如果您希望逐字地获取与选项卡关联的所有cookie,则需要使用chrome.webRequest
API 收集它们.使用webRequest
事件来检测网络请求以及Cookie
请求标头Set-Cookie
和Set-Cookie2
响应标头.您必须手动解析cookie.
如果您想快速查看与选项卡关联的所有cookie(仅限框架,如第一种方法),您还可以打开开发人员工具并查看参考资料 - > Cookies).
(图片来源:https://developers.google.com/chrome-developer-tools/docs/resources)