这是我参与8月更文挑战的第29天,活动详情查看:8月更文挑战
前言
吃饱饭才有力气写代码~
随着Web应用程序的出现,直接在客户端存储用户信息的需求也随之出现,这背后的想法是:与特定用户相关的信息应该保存在用户的机器上,比如登录信息、个人偏好,还有其它数据。解决这个问题的方法之一就是cookie,今天就来学习一下cookie~
cookie
HTTP cookie 通常也叫cookie,最初用于在客户端存储会话信息,这个规范要求服务器在相应HTTP请求时,通过发送Set-Cookie HTTP 头部包含会话信息。比如:
HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: name=value
Other-header: other-header-value
这个HTTP响应会设置一个名为"name",值为"value"的cookie,名和值在发送时都会经过URL编码,浏览器会存储这些会话信息,并在之后的每个请求中都会通过HTTP头部cookie再把它们发送回服务器,比如:
GET /index.jsl HTTP/1.1
Cookie: name=value
Other-header: other-header-value
这些发送回服务器的额外信息可用于唯一标识发送请求的客户端。
限制
cookie 是与特定域绑定的,设置了它之后,它就会与请求一起发送到创建它的域。这样就可以保证cookie中存储的信息只对被认可的接受者开放,而不被其它域访问。
因为cookie存储在客户端机器上,为了保证它不被恶意利用,浏览器会施加限制,同时它也不会占用太多磁盘空间。通常只要大致遵守以下限制,在任何浏览器中都不会碰到问题。
- 不超过300个cookie
- 每个cookie不超过4096字节
- 每个域不超过20个cookie ......
cookie的构成
cookie在浏览器中由以下参数构成
- 名称 唯一标识cookie的名称
- 值 存储在cookie里的字符串值
- 域 cookie 有效的域
- 路径 请求URL中包含这个路径才会把cookie发送到服务器
- 过期时间 表示什么时候删除cookie 的时间戳
- 安全标志 设置之后只有在使用SSL安全连接的情况下才会把cookie发送到服务器