我需要使用 JavaScript 获取存储在浏览器中的所有cookie 。怎么做到呢?
9 回答
您只能访问特定站点的 cookie。使用document.cookie
您将获得由分号分隔的转义键=值对列表。
secret=do%20not%20tell%you;last_visit=1225445171794
为了简化访问,您必须解析字符串并取消转义所有条目:
var getCookies = function(){
var pairs = document.cookie.split(";");
var cookies = {};
for (var i=0; i<pairs.length; i++){
var pair = pairs[i].split("=");
cookies[(pair[0]+'').trim()] = unescape(pair.slice(1).join('='));
}
return cookies;
}
所以你以后可能会写:
var myCookies = getCookies();
alert(myCookies.secret); // "do not tell you"
- 您看不到其他网站的 cookie。
- 你看不到
HttpOnly
cookies。 - 您可以看到的所有 cookie 都在该
document.cookie
属性中,该属性包含一个以分号分隔的name=value
对列表。
你不能。根据设计,出于安全目的,您只能访问您网站设置的 cookie。StackOverflow 看不到 UserVoice 设置的 cookie,也看不到 Amazon 设置的 cookie。
要检索在浏览器中打开的当前文档的所有 cookie,请再次使用该document.cookie
属性。
现代方法。
let c = document.cookie.split(";").reduce( (ac, cv, i) => Object.assign(ac, {[cv.split('=')[0]]: cv.split('=')[1]}), {});
console.log(c);
;)
由于标题没有指定它必须是程序化的,我假设这是一个真正的调试/隐私管理问题,并且解决方案取决于浏览器,并且需要具有内置详细 cookie 管理收费和/或调试模块的浏览器或插件/扩展。我将列出一个,并请其他人在他们详细了解的浏览器上写下来,并请提供准确的版本。
铬,铁构建(SRWare Iron 4.0.280)
扳手(工具)菜单:选项/幕后/[显示 cookie 和网站权限] 对于相关域/站点,在搜索框中键入后缀(如 .foo.tv)。警告:当您有一个节点(站点或 cookie)单击突出显示时,仅使用 [删除] 来杀死特定的子树。使用 [全部删除] 仍会删除搜索选择的所有站点的 cookie,并浪费您的调试会话。
将 trim() 添加到 object 的 key 中,并将其命名为 str,这样会更清楚我们在这里处理的是 string。
export const getAllCookies = () => document.cookie.split(';').reduce((ac, str) => Object.assign(ac, {[str.split('=')[0].trim()]: str.split('=')[1]}), {});
如果您开发浏览器扩展,您可以尝试browser.cookies.getAll()
你问的是可能的;但这仅适用于特定浏览器。您必须开发一个浏览器扩展应用程序来实现这一点。您可以阅读有关 chrome api 的更多信息以更好地理解。https://developer.chrome.com/extensions/cookies