哈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了。
该库解决了上述所有问题,并保留了其前身的小尺寸和易于使用的功能。
为什么要使用它?
- , , .
- — 707
- -,
- JSON " " ( JSON, , JSON-, JSON-)
- -
- ( ES6!)
- JS ( )
- npm, CDN,
:
setCookie('name', 'value');
setCookie('name', {'key': 'value'});
"" :
setCookie('name', 'value', {expires: Date(3)});
setCookie('name', {'key': 'value'}, {expires: Date(3)});
setCookie()
. .
:
getCookie('name')
getCookie('name', json=true)
:
deleteCookie('name');
, 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. !