关于cookie
什么事cookies:
- cookie是浏览器存储在用户 客户端上的一小段文本文件 (不超过4k,单域名cookies不超过30个),不包含任何执行代码。
-
http://example.com设置的 Cookie,可以被https://example.com读取。
(浏览器的同源政策规定,两个网址只要域名相同和端口相同,就可以共享 Cookie(参见《同源政策》一章)。注意,这里不要求协议相同。,)
为什么要cookies:
由于http协议的无状态,对于一个浏览器发送的多次请求,服务器无法辨别是否源自同意浏览器,所欲需要额外的数据用于维护会话,cookies就是这样一段随http请求一起被传递的额外数据。
cookies的构成:
set cookie: name=value; domain=.mozilla.org; expires=Feb, 13-Mar-2018 11:47:50; path=/; secure
-
名称 name:一个唯一确定cookie的名称,不分大小写,cookie的名字必须是经过URL编码的,一般可以采用某个前缀在加上当前时间的- - 做法,这样的话名称能够确保是唯一的,也比较方便。
-
值 value:存储在cookie中的字符串值,必须经过被URL编码
-
域 domain:对于哪个域是有效的,如果没有设置的话,默认来自设置cookie的那个域,在上诉例子中就是.Mozilla.org
-
失效时间 expires:表示cookie何时应该被删除的时间戳,这个日期是GMT格式的日期,如果设置是以前的时间,cookie会被立刻删除。上 诉cookie的失效时间是Feb,13-Mar-2018 11:47:50。
-
路径 path :指定域中的那个路径,应该想服务器发送cookie,/ 表示没有限制
安全标志 secure :指定以后,cookie只有在使用https连接的时候才可以发送到服务器,该属性只是一个开关,不需要指定。如果通信是https 该开关默认打开。
cookies常见应用
- 对话(session)管理:保存登录、购物车等需要记录的信息。
- 个性化:保存用户的偏好,比如网页的字体大小、背景色等等。
- 追踪:记录和分析用户行为。
cookies相关设置
- cookies由http协议生成,也主要被http协议使用
设置cookie
- 在http回应头信息里放置 Set-Cookie字段
Set-Cookie:foo=bar // 在浏览器保存一个名为foo的cookie 值为bar
- http回应可以设置多个Set-Cookie字段 生成多个cookie
HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie:test_Cookie=one
Set-Cookie:testCookie=tow
[page content]
除了cookie的值 还可以附加上面提到的其他属性
Set-Cookie: <cookie-name>=<cookie-value>; Domain=<domain-value>; Secure; HttpOnly
Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly
- 如果服务器想要修改之前的cookie 就不许保证新的cookie的 key domain path secure这四个与之前的cookie完全一致,否则会创新新的cookie 而不替换旧cookie
服务器收到浏览器发来的cookie 亮点是无法知道的:
- cookie的这种属性和过期时间
- 那个域名设置的cookie 到底是一级域名还是二级域名设置的cookie