浅谈浏览器中的cookie
1. 概述
cookie是服务器保存在浏览器的一小部分文本信息,每个cookie都不能超过4kb。浏览器每次向服务器发出请求,就会自动附上这段信息。
cookie会保存以下几方面的信息。
Cookie的名字
Cookie的值
到期时间
所属域名(默认是当前域名)
生效的路径(默认是当前路径)
浏览器可以设置不接受cookie,也可以设置服务器发送cookie
window.navigator.cookieEnabeled
属性返回一个布尔值,表示浏览器是否打开Cookie功能。
document.cookie
属性当前网页的所有cookie,cookie返回的是分号分隔的所有cookie。
document.cookie
属性也是可写的,可以通过它为网站添加cookie.
document.cookie = 'fontSize=14';
Cookie 的值必须写成key=value的形式。注意,等号两边不能有空格。
但是document.cookie一次只能写入一个cookie,而且写入的不是覆盖,而是添加。
2.Cookie的属性
服务器向浏览器发送cookie的时候,除了cookie本身的内容,还有一些可选内容,它们都必须以分号开头。
(1)value属性
value属性是必需的,它是一个键值对,用于指定Cookie的值
(2)expires属性
expires属性用于指定cookie过期的时间。如果不设置该属性,或者设为null,Cookie只在当前会话(session)有效,浏览器窗口一旦关闭,当前 Session 结束,该 Cookie 就会被删除。
(3)domain属性
domain属性指定cookie的域名信息。
(4)path属性用来指定路径。
(5)secure属性
secure属性用来指定Cookie只能在加密协议HTTPS下发送到服务器。
(6)max-age
max-age属性用来指定Cookie有效期,比如60 * 60 * 24 * 365(即一年31536e3秒)。
(7)HttpOnly
HttpOnly属性用于设置该Cookie不能被JavaScript读取。
3.Cookie的限制
长度限制:只能不超过4kb
4.同源政策
浏览器的同源政策规定,两个网址只要域名相同和端口相同,就可以共享 Cookie。
Http-Only Cookie
设置 Cookie 的时候,如果服务器加上了HttpOnly属性,则这个 Cookie 无法被 JavaScript 读取(即document.cookie不会返回这个Cookie的值),只用于向服务器发送,防止XSS攻击盗取Cookie.