本文是对 阮一峰Cookie的简述
概述
是服务器保存在浏览器的一小段信息, 有了Cookie , 浏览器在每次向服务器发送请求的时候, 会自动附带上这一段信息.
Cookie包含的信息
- Cookie的名字
- Cookie的值
- 到期时间
- 所属域名(默认当前域名)
- 生效路径(默认当前网址)
服务器的设置
Cookie由HTTP协议生成, 服务器希望在浏览器中保存Cookie, 就要在HTTP回应的头信息里面:
用 Set-Cookie: foo=bar, 保存多条需要设置多行的Set-Cookie
此外Set-Cookie还可以附加Cookie的属性:(属性不区分顺序)
Cookie的属性
Set-Cookie: <cookie-name>=<cookie-value>; Expires=<date>
Set-Cookie: <cookie-name>=<cookie-value>; Max-Age=<non-zero-digit>
Set-Cookie: <cookie-name>=<cookie-value>; Domain=<domain-value>
Set-Cookie: <cookie-name>=<cookie-value>; Path=<path-value>
Set-Cookie: <cookie-name>=<cookie-value>; Secure
Set-Cookie: <cookie-name>=<cookie-value>; HttpOnly
Expires, Max-Age
Expires指定具体的到期时间, 到期后浏览器不在保留这个Cookie. 值为UTC格式, 可以使用 Date.prototype.toUTCString()进行格式转换, 如果没有设置浏览器会在关闭时删除Cookie.
Max-Age指定从现在开始 Cookie 存在的秒数, 过了这个秒数就不在保留
如果同时设置了 Expires 和 Max-Age , 则 Max-Age的优先级更高.
Domain, Path
Domain属性是 指定浏览器发送HTTP请求时, 那个域名要附带这个Cookie ,如果没有指定 则 默认是 当前URL的以及域名, 其后的子域名都会带上, 设置的时候 不属于当前域名, 浏览器会拒绝.
Path属性如果保存的生效路径是 /xxx, 则只对 访问/xxx和其之后的生效 ,前提是 域名一致
Secure, HttpOnly
Secure 属性 指定浏览器只有在 HTTPS下 才会把 Cookie 发送到服务器 ,如果 当前是 HTTP协议, 浏览器会忽略 服务器发来的 Secure属性. 这个属性 是一个开关不需要指定值.
HttpOnly指定该Cookie 无法通过 JavaScript脚本拿到, 主要是Document.cookie属性、XMLHttpRequest对象和 Request API 都拿不到该属性.
获取Cookie
**用 windownavgator.cookieEnabled判断浏览器是否打开Cookie功能 **
用document.cookie获取当前页面的Cookie
删除Cookie
设置 Cookie 的 expires 属性 为一个 过去的日期
document.cookie = 'fontSize=;expires=Thu, 01-Jan-1970 00:00:01 GMT';











网友评论