在纯JavaScript中使用Cookie可以轻松解决

哈Ha!


我最近遇到了使用JavaScript使用Cookie的需求。当我看到在纯JavaScript中使用document.cookie真是太糟糕了时,我去找一个图书馆,以方便使用cookie。事实证明,尽管乍看之下似乎很简单方便,但很少有用于处理Cookie的库,但是在使用它们的过程中发现了很多陷阱。这里是其中的一些:


  • 在指定的路径上接收cookie-一些经过测试的库在访问带有路径的cookie时遇到问题:例如,我无法从网站页面上获取带有路径的cookie,/反之亦然,因为undefined我试图在指定的路径上获取cookie 几次,却在网站的“根目录”中方式/order
  • JSON支持 -它发生了,但是它工作起来很弯曲:例如,当接收到一个存储JSON的cookie时,您将获得一个URI编码的字符串,您需要对它进行解码和解析。将库连接到您的代码中并添加函数来解决此问题是错误的。
  • 删除cookie-所有库都存在删除cookie的问题。几乎每个人都清除了cookie的值,但没有删除它。会话cookie有单独的问题:某些库没有将它们视为“空白”,而且它们都无法删除会话cookie。
    我不会命名尝试过的库,因为相对于其开发人员而言,这是不正确的,但我将澄清一下,我尝试了最受欢迎的库(根据npm)来处理Cookie。

最后一个问题使我非常恼火,我决定是时候编写自己的图书馆来处理Cookie了。


Cookie.js(npm-cookielib)


该库解决了上述所有问题,并保留了其前身的小尺寸和易于使用的功能。


为什么要使用它?


  • , , .
  • 707
  • -,
  • JSON " " ( JSON, , JSON-, JSON-)
  • -
  • ( ES6!)
  • JS ( )
  • npm, CDN,


:


setCookie('name', 'value');  //  
setCookie('name', {'key': 'value'});  // json 

"" :


setCookie('name', 'value', {expires: Date(3)});  //   
setCookie('name', {'key': 'value'}, {expires: Date(3)});  // json  

setCookie() . .


:


getCookie('name')  //  
getCookie('name', json=true)  //   json,    json.   JSON

:


deleteCookie('name');  // json   -  !


, setCookie(name, value, dict), dict " ": " "


-:


  • path (str) — URL,
  • domain (str) — ,
  • expires (Date object) — "" (/ Date-)
  • max-age (int) — ( expires)
  • secure (bool) — true, HTTPS. false
  • samesite (str) — , XSRF-… strict lax. , .
    • httpOnly (bool) — true, JavaScript. false


, . GitHub. .



, printf RekGRpth. !


All Articles