cookie 是前端中一个小点,还是比较重要的。
什么是cookie
cookie是保存在你的计算机中的小型文本文件中的数据。web 服务器将网页发送到浏览器之后,连接将关闭,浏览器也将忘记用户信息。cookie 就是为了解决这个问题。
当你再次打开浏览器时,浏览器会从本地文件读取 cookie,这样浏览器就会认识你,比如一些网站的自动登录,使用的是这个技术。
获取cookie
let cookies = document.cookie
设置cookie
document.cookie = newCookie;
newCookie 是一个键值对的值,使用这种方法只能一次设置一个值。
cookie的属性
1 ;path=path (例如 ‘/’, ‘/mydir’) 如果没有定义,默认为当前文档位置的路径
2 ;domain=domain (例如 ‘example.com’, ‘subdomain.example.com’) 如果没有定义,默认为当前文档位置的路径的域名部分。与早期规范相反的是,在域名前面加 . 符将会被忽视,因为浏览器也许会拒绝设置这样的cookie。如果指定了一个域,那么子域也包含在内。
3 ;max-age=max-age-in-seconds (例如一年为606024*365)
max-age>0 时 直接从游览器缓存中 提取
max-age<=0 时 向server 发送http 请求确认 ,该资源是否有修改
有的话 返回200 ,无的话 返回304.
4 ;expires=date-in-GMTString-format 如果没有定义,cookie会在对话结束时过期
注:3和4都可以设置过期时间,不过他们是有区别的,具体区别看这里 两者区别
5 ;secure (cookie只通过https协议传输)
Cookie的缺陷
1 cookie 会被加在每个http请求中,所以无形中增加了流量。
2 cookie 在请求中是明文传递的,所以会造成安全问题,除非用超文本安全传输协议
3 cookie 的大小限制在 4k 左右,对于复杂的存储需求来说是不够用的。