- Cookies通过HTTP响应头发送给客户端(Set-Cookie字段设置)。
- 浏览器每次发出请求头(Cookies字段设置)时都会将当前匹配的Cookies发送给服务器(直到Cookies过期)
- 属性值的等号两边,不能有空格。
- Cookies不提供删除和修改的方式,需要使用其他方式间接实现。
- 一个响应头可以设置多个Set-Cookie。
- eg:Set-Cookie: key=value; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly 。
- 如果服务器想改变一个早先设置的 Cookie,必须同时满足四个条件:Cookie 的
key
、domain
、path
和secure
都匹配,只要有一个属性不同,就会生成一个全新的 Cookie,而不是替换掉原来那个 Cookie。 - cookies的大小上限一般为4K,且在不同的浏览器中每个域名的cookies数量也有限制。
- 根据浏览器的设置,cookies可能会失效(禁用或者较高的安全级别)
Cookies数据结构 | |||
---|---|---|---|
Attribute Name | default | description | other |
Expires | 设置具体的过期时间,时间为UTC格式,浏览器根据本地时间对比此值决定是否删除此Cookies | 若这两个属性都未设置,则表示当前Cookies是临时Cookies,也就是保存在内存中,关闭浏览器则失效。 | |
Max-Age | -1 | 设置Cookies多久之后过期,单位秒,优先级高于Expires。当Max-Age > 0时,表示在Max-Age秒后过期,浏览器会将Cookies保存在本地存储介质中。当Max-Age=0,表示立即删除此Cookies,服务器可以如此如此删除Cookies。当Max-Age < 0时为临时Cookies,保存在内存中,关闭浏览器则失效。 | |
HttpOnly | - | JavaScript的 Doecument.cookie API 无法访问; 它们只被发送到服务器。 | |
Secure | - | 在不安全的网站中(http:)无法使用该Secure指令设置Cookie,而且浏览器会忽略服务器发送的带Secure的Cookie(新版浏览器中)。带Secure的Cookie只能通过https协议传输。 | |
Domain | 一级域名 | 属性值必须时当前URL的一部分 指定哪些域名要附带这个Cookie | |
Path | 当前路径 | Path属性指定浏览器发出 HTTP 请求时,哪些路径要附带这个 Cookie。只要浏览器发现,Path属性是 HTTP 请求路径的开头一部分,就会在头信息里面带上这个 Cookie。必须为绝对路径。 |
详细信息请见参考2
参考:
[1].http://javascript.ruanyifeng.com/bom/cookie.html
[2].https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies