我需要使用JavaScript 获取存储在浏览器中的所有cookie。如何做呢?
我需要使用JavaScript 获取存储在浏览器中的所有cookie。如何做呢?
Answers:
您只能访问特定站点的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"
HttpOnly
Cookie。document.cookie
属性中,该属性包含用分号分隔的name=value
成对列表。你不能。从设计角度出发,出于安全目的,您只能访问由您的网站设置的cookie。StackOverflow无法看到UserVoice设置的cookie或Amazon设置的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)时,单击突出显示时,仅使用[Remove]可以杀死特定的子树。使用[全部删除]仍会删除搜索选择的所有站点的cookie,并浪费调试会话。
如果您开发浏览器扩展,则可以尝试browser.cookies.getAll()
您的要求是可能的;但这仅适用于特定的浏览器。您必须开发一个浏览器扩展应用程序才能实现此目的。您可以阅读有关chrome API的更多信息,以更好地理解。https://developer.chrome.com/extensions/cookies