本文是对 阮一峰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';
网友评论