Cookie相关

设置Cookie

使用document.cookie与Server端 set-cookie字段区别:

字段名称 document.cookie set-cookie 备注
expires document.cookie只支持 Data.toUTCString() 形式
max-age max-age优先级比 expires高
domain
path
secure
httpOnly
SameSite 不随跨域请求发送,防止csrf

设置cookie方式:

  1. docuemnt.cookie:
document.cookie="token=xxxx"
document.cookie="a=xx"
  1. set-cookie:
Set-cookie: token=xxxx
Set-cookie: a=xx

删除一个cookie

cookie应该使用 Domain + Name + Path来唯一标识的。cookie本身只是一个字符集合,并没有提供删除的api,如果想要删除,可以巧用过期时间。例如删除当前域名下的 path为/ 同时Name为 a的cookie:

document.cookie = 'a=1;expires=Thu, 01 Jan 1970 00:00:00 GMT' // 时间需要时 Date().toUTCString()格式,通用的1970-01-01不识别

同理如果需要删除path为其他域名的,需要指定path

document.cookie="a=2;path=/qr;expires=Thu, 01 Jan 1970 00:00:00 GMT" // 指定path为 /qr

在最新的chrome下面使用 max-age也是可以删除的

document.cookie='a=1;max-age=-1'

如果删除不了,请设置domain!!!

浏览器对Cookie的限制

基于chrome的测试

每一个cookie的大小4KB,此处现在应该是document.cookie值的总长度限制;
如果一个cookie超过4kb执行不报错,但是会设置不成功
同理对于 set-cookie也是一样大道理

基于Firefox的测试

每一个cookie的大小为4KB,但是不会包含 = 和选项的大小

具体可以通过 http://browsercookielimits.squawky.net/ 进行测试

参考文档

  1. MDN Document.Cookie
  2. MDN Set-Cookie

你可能感兴趣的:(Cookie相关)