如何在 Javascript 中存储 http cookie

我想将 cookie 的子集存储在相当于关联数组的 Javascript(非 JQuery)中(我知道 Javascript 没有)。在我熟悉的大多数语言中,这很简单,大致如下:-


cookiepart = cookieset.split('=');

cookie{cookiepart[0]} = cookiepart[1];

这是一个简单的情况:-


print(cookie{'session'});

我能够实现任何目标的唯一方法是对密钥进行硬编码,即:-


print(cookie.session);

这将需要使用 switch 语句,如下所示:-


switch(cookiepart[0]) {

  case 'session':

    cookie.session = cookiepart[1];

    break;

  case 'cookie2':

    cookie.cookie2 = cookiepart[1];

    break;

等等,等等


填充让我觉得特别不优雅的数组。


有没有更好的办法?


感谢@DigitalDrifter,这几乎可以工作了——但还不够。


实际的 cookie 是:-


redirect=1; sessionid=110430

我的代码是:-


let cookie = {};

let cookies = document.cookie.split(';');

cookies.forEach(c => {

        let [k, v] = c.split('=');

        Object.assign(cookie, {[k]: v});

});


alert("redirect : "+cookie.redirect);

alert("sessionid : "+cookie.sessionid);

cookie.redirect工作正常并显示 1



cookie.sessionid显示未定义。为什么会这样呢?


紫衣仙女
浏览 123回答 3
3回答

阿晨1998

我认为你最好{}在这里使用对象而不是数组。let cookie = 'redirect=1; sessionid=110430';let obj = {};cookie.split(';').forEach(c => {  let [k, v] = c.split('=').map(p => p.trim());  Object.assign(obj, { [k]: v });});console.log(obj);// outputs// {// "redirect": "1",// "sessionid": "110430"// }console.log(obj.sessionid);// outputs// 110430

ITMISS

对于任何发现这个问题的人,这就是我解析和保存 http cookie 的方式:-let cookie = {};let cookies = document.cookie.split(';');cookies.forEach(c => {        let [k, v] = c.split('=').map(p => p.trim());        Object.assign(cookie, {[k]: v});});

慕侠2389804

您可以使用 JSON,然后对其进行解析/字符串化。另外,我在下面使用本地存储。我创建了两个函数,这样您就可以将它们重复用于您想要的任何存储。function getStorage(key){  str = localStorage.getItem(key) || "{}"  return JSON.parse(str)}function setStorage(key, values){   localStorage.setItem(key,JSON.stringify(values))}str = getStorage("session")str["test"] = 1setStorage("session", str)sessions = getStorage("session")console.log(sessions["test"])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript