Skip to content
/ cookies Public

类似 Storage API 那样操作 document.cookie

License

Notifications You must be signed in to change notification settings

hdcljt/cookies

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@hudc/cookies

build coverage version license types

使用 Proxy 代理浏览器 cookie 的常用操作,也支持使用类似 Storage API 的方式操作 cookie

安装

npm install @hudc/cookies

引入

import cookies, {
  cookie,
  getItem,
  setItem,
  removeItem,
  hasItem,
  clear,
  keys,
  length,
} from '@hudc/cookies'
  1. 默认导出的 cookies 封装了 getItem, setItem, removeItem, hasItem, clear, keys, length 方法
  2. 按需导出的 cookie 使用 Proxy 代理了 get, set, deleteProperty, has, ownKeys 方法

查询 cookie

// 假设 document.cookie 值为 'abc=123; def-1=456%3AFLAG%3D1'
cookie.abc // 输出 '123'
cookie['def-1'] // 输出 '456:FLAG=1'
cookies.getItem('abc') // 输出 '123'
cookies.getItem('def-1') // 输出 '456:FLAG=1'
getItem('abc') // 输出 '123'
getItem('def-1') // 输出 '456:FLAG=1'

设置 cookie

  • expires 过期时间
    • 值可以是一个 dateString,或者一个 timeStamp
    • 当值为整型,并且小于 1e9(十亿),则认为是一个过期的秒数
    • 默认在会话结束时过期
  • path 路径,默认为当前文档位置的路径
  • domain 子域名,默认为当前文档位置的路径的域名部分(包含子域)
  • secure 是否只能通过 https 协议传递,默认false
  • sameSite 限制跨站传递的策略
    • None 不限制,即跨站点和同站点都会发送 cookie (需要设置 secure)
    • Strict 严格,只有同站点的 cookie 才会被发送
    • Lax 默认
  • 返回当前设置的完整信息
// 假设 document.cookie 为空
cookie.abc = '123' // 'abc=123'
cookie['def-1'] = { value: '456:FLAG=1' } // 'abc=123; def-1=456%3AFLAG%3D1'
cookie['ghi[1]'] = { value: '789', expires: 5 } // 'abc=123; def-1=456%3AFLAG%3D1; ghi[1]=789'
// 假设 document.cookie 为空
cookies.setItem('abc', '123') // 'abc=123'
cookies.setItem('def-1', '456:FLAG=1') // 'abc=123; def-1=456%3AFLAG%3D1'
cookies.setItem('ghi[1]', '789', 'Tue, 19 Jan 2038 03:14:07 GMT') // 'abc=123; def-1=456%3AFLAG%3D1; ghi[1]=789'
// 假设 document.cookie 为空
setItem('abc', '123') // 'abc=123'
setItem('def-1', '456:FLAG=1') // 'abc=123; def-1=456%3AFLAG%3D1'
setItem('ghi[1]', '789', 2147483647000) // 'abc=123; def-1=456%3AFLAG%3D1; ghi[1]=789'

删除 cookie

// 假设 document.cookie 值为 'abc=123; def-1=456%3AFLAG%3D1; ghi[1]=789'
delete cookie.abc // 'def-1=456%3AFLAG%3D1; ghi[1]=789'
cookies.removeItem('def-1') // 'ghi[1]=789'
removeItem('ghi[1]') // ''

清空 cookies

cookies.clear()
clear()

是否存在指定名称的 cookie

// 假设 document.cookie 值为 'abc=123; def-1=456%3AFLAG%3D1; ghi[1]=789'
'abc' in cookie // true
cookies.hasItem('def-1') // true
hasItem('ghi[1]') // true

获取所有 cookie 名称

// 假设 document.cookie 值为 'abc=123; def=456:FLAG=1'
cookie.keys // 输出 ['abc', 'def']
Object.getOwnPropertyNames(cookie) // 输出 ['abc', 'def']
cookies.keys // 输出 ['abc', 'def']
keys() // 输出 ['abc', 'def']

获取 cookies 数量

// 假设 document.cookie 值为 'abc=123; def=456:FLAG=1'
cookie.length // 输出 2
cookies.length // 输出 2
length() // 输出 2

参考

About

类似 Storage API 那样操作 document.cookie

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published