設(shè)置Cookie
使用document.cookie與Server端 set-cookie字段區(qū)別:
| 字段名稱 | document.cookie | set-cookie | 備注 |
|---|---|---|---|
| expires | √ | √ | document.cookie只支持 Data.toUTCString() 形式 |
| max-age | √ | √ | max-age優(yōu)先級比 expires高 |
| domain | √ | √ | |
| path | √ | √ | |
| secure | √ | √ | |
| httpOnly | √ | ||
| SameSite | √ | 不隨跨域請求發(fā)送,防止csrf |
設(shè)置cookie方式:
- docuemnt.cookie:
document.cookie="token=xxxx"
document.cookie="a=xx"
- set-cookie:
Set-cookie: token=xxxx
Set-cookie: a=xx
刪除一個cookie
cookie應(yīng)該使用 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'
如果刪除不了,請設(shè)置domain?。?!
瀏覽器對Cookie的限制
基于chrome的測試
每一個cookie的大小4KB,此處現(xiàn)在應(yīng)該是document.cookie值的總長度限制;
如果一個cookie超過4kb執(zhí)行不報錯,但是會設(shè)置不成功
同理對于 set-cookie也是一樣大道理
基于Firefox的測試
每一個cookie的大小為4KB,但是不會包含 = 和選項的大小
具體可以通過 http://browsercookielimits.squawky.net/ 進行測試