我需要从浏览器中获取所有的 cookie

我需要使用 JavaScript 将所有的 饼干存储在我的浏览器中。如何做到这一点?

242960 次浏览

若要检索浏览器中打开的当前文档的所有 Cookie,请再次使用 document.cookie属性。

你不能。根据设计,出于安全目的,您只能访问站点设置的 Cookie。StackOverflow 无法看到 UserVoice 设置的 cookie 和 Amazon 设置的 cookie。

  1. 你不能看到其他网站的 cookie。
  2. You can't see HttpOnly cookies.
  3. 您可以看到的所有 cookie 都在 document.cookie属性中,该属性包含一个 semicolon分隔的 name=value对列表。

只能访问特定站点的 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"

Since the title didn't specify that it has to be programmatic I'll assume that it was a genuine debugging/privacy management issue and solution is browser dependent and requires a browser with built in detailed cookie management toll and/or a debugging module or a plug-in/extension. I'm going to list one and ask other people to write up on browsers they know in detail and please be precise with versions.

铬,铁构建(SRWare Iron 4.0.280)

扳手(工具)菜单: 选项/面罩下/[显示 Cookie 和网站权限] 对于相关域名/站点,在搜索框中键入后缀(如。Foo.tv).警告: 当您有一个节点(站点或 cookie)单击-突出显示只使用[删除]杀死特定的子树。使用[删除全部]仍然会删除通过搜索选择的所有站点的 Cookie,并浪费您的调试会话。

Modern approach.

let c = document.cookie.split(";").reduce( (ac, cv, i) => Object.assign(ac, {[cv.split('=')[0]]: cv.split('=')[1]}), {});


console.log(c);

;)

在对象中的键中添加饰() ,并将其命名为 str,这样我们在这里处理字符串就更清楚了。

export const getAllCookies = () => document.cookie.split(';').reduce((ac, str) => Object.assign(ac, {[str.split('=')[0].trim()]: str.split('=')[1]}), {});

如果你开发 浏览器扩展你可以尝试 浏览器 cookie getAll ()

您的要求是可能的,但这只能在特定的浏览器上工作。你必须开发一个浏览器扩展应用程序来实现这一点。你可以阅读更多关于 chrome api 的信息,以便更好地理解。https://developer.chrome.com/extensions/cookies