設(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來唯一標(biāo)識的疮绷。cookie本身只是一個字符集合两蟀,并沒有提供刪除的api买羞,如果想要刪除,可以巧用過期時間柱徙。例如刪除當(dāng)前域名下的 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
5型辍!羊初!
瀏覽器對Cookie的限制
基于chrome的測試
每一個cookie的大小4KB滨溉,此處現(xiàn)在應(yīng)該是document.cookie值的總長度限制;
如果一個cookie超過4kb執(zhí)行不報錯长赞,但是會設(shè)置不成功
同理對于 set-cookie也是一樣大道理
基于Firefox的測試
每一個cookie的大小為4KB晦攒,但是不會包含 =
和選項的大小
具體可以通過 http://browsercookielimits.squawky.net/ 進行測試