本文已参与「新人创作礼」活动,一起开启掘金创作之路
本文主要记录了Cookie、以及Cookie常用操作和Cookie常用属性。
Cookie
Cookie介绍
Cookie全程 HTTP Cookie ,简称 Cookie。它是浏览器存储数据的一种方式,一般会自动随着请求发送到服务器;
有的网站会利用Cookie跟踪统计用户的习惯,比如:访问时间,访问哪些页面,页面停留时间等;
Cookie是公开透明的,不要用Cookie存储密码等敏感信息;
Cookie容量限制
单个Cookie容量为4k,不同浏览器Cookie个数各不相同一般设置20个没有问题;
IE6及以下每个域名最多包含20个Cookie; IE7及以上每个域名最多50个Cookie; Firefox每个域名最多50个Cookie; Opera下每个域名最多30个Cookie; Sarafi和Chrome对每个域的Cookie数目没有严格限制。
Cookie基本操作
写入Cookie
通过document.cookie设置Cookie,不支持一次设置多个Cookie,只能一个一个的设置;
读取Cookie
读取也通过document.cookie,读取全部Cookie;
读取的是由名值对构成的字符串,每个名值对之间由; (一个分号和一个空格) 分隔;
Cookie属性
Name(名)、Value(值)
Name、Value是创建Cookie时必须填写的,其他属性不写为默认值;
Name、Value如果包含非英文字符,写入需要使用encodeURIComponent()编码,读取需要使用decodeURIComponent()解码;
Expires、Max-Age(失效时间)
未设置Expires、Max-Age的cookie为会话cookie,它存在内存中,当会话结束即关闭浏览器时清除cookie;
设置Expires、Max-Age属性的cookie到期后会被清除;
Expires
expires值为Date类型,表示具体什么时间过期;
Max-Age
max-age值为数字,表示过多少秒后失效;
如果max-age值为0 或 负数这直接清除cookie;
Domain(域)、Path(路径)
Domain
Domain限制了cookie的访问范围;
js只能读写当前域或父域的cookie,不能读写其他域的cookie;
www.aaaa.com 和 m.aaaa.com 的父域为 .aaaa.com
Path
Path限制了cookie的访问范围(同一域名下);
js只能读写当前路径或上级路径的cookie,不能读写其他路径的cookie;
==Name、Domain、Path三个字段都相同时,才是同一个cookie;==
HttpOnly
如果这个cookie设置了httponly属性,则这个cookie不能通过客户端访问;
Secure
Secure限定了只有使用https协议,才能将cookie发送到服务器端;
==Domain、Path、Secure都满足其未过期的cookie才会随着请求发送到服务器端;==
本文到此结束
如果大家还有什么其他想法,欢迎在评论区交流!