Cookie不是内置对象,所以在使用时不需要new出来,Cookie是由服务器端产生的,再发送给客户端保存。

Cookie的作用:本地缓存

Cookie的优点:提高访问服务器端的效率

Cookie的缺点:安全性较差

Cookie格式:”name=value;domain=.domain.com;path=/;expires=Sat,11 Jun 2016 11:29:42 GMT;HttpOnly;secure”;

  • name=value;是需要存储的值
  • domain=.domain.com;是针对于哪个域是有效的,所有向该域发送的请求中都会包含这个cookie信息。
  • path=/;表示这个cookie影响到的路径,浏览器会根据这项配置,向指定域中匹配的路径发送cookie。
  • expires=Sat,11 Jun 2016 11:29:42 GMT;失效时间,表示何时应该被删除的时间戳(也就是何时停止向服务器发送存储在本地的cookie)。如果不设置这个时间戳,浏览器会在页面关闭时删除所有的cookie。失效时间是GMT时间格式,如果客户端和服务器端时间不一致,使用expires就会存在偏差。如果设置的时间是过去的时间,浏览器会立即删除该cookie。
  • HttpOnly;告知浏览器不允许通过脚本document.cookie去更改这个值,同样这个值在document.cookie中也不可见。但在http请求中会携带这个cookie。
  • secure;安全标志,指定后,只有在使用SSL连接时才能发送到服务器,如果是http连接则不会传递该信息。就算设置了secure属性他也人也能看到你机器本地保存的cookie信息。所以重要信息就不要通过cookie存放。

Cookie机制

当用户第一次访问并登陆一个网站的时候,cookie的设置以及发送会经历以下4个步骤:

  1. 客户端发送一个请求到服务器
  2. 服务器发送一个HttpResponse响应到客户端,其中包含Set-Cookie的头部
  3. 客户端保存cookie,之后向服务器发送请求时,HttpRequest请求中会包含一个Cookie的头部
  4. 服务器返回响应数据

Cookie - 图1

cookie的类型

  1. 会话cookie(session cookie):

没有设置过期时间,添加后会存储在浏览器缓存中,只要浏览器没有关闭,同一域名下的文件都可以访问到cookie,浏览器关闭,cookie销毁

  1. 永久cookie(持久cookie):

设置了过期时间,添加后会存储在硬盘中,在过期之前,每次请求都会携带cookie,即使关闭计算机,cookie也不会销毁。到达过期时间,会自动销毁。

跨域

  1. 协议不同 http://www.baidu.com https://www.baidu.com
  2. 域名不同 http://www.baidu.com http://www.imooc.com
  3. 端口不同 http://www.baidu.com:80 http://www.baidu.com:3000
  4. 主域名相同,子域名不同 http://www.baidu.com http://si.baidu.com

没有设置domain时,cookie只能被同一域名下的文件访问,子域名也没有访问权限。
设置domain后,可以让子域名拥有访问权限:document.cookie=”uesr=123;domain=.baidu.com”。

cookie的增删改查

document.cookie = “键 = 值 ; expires = 过期时间 ; path = 路径; domain = 域名”

设置一个马上就过期的时间

设置一个相对path下的相同的键名,值不同的cookie

document.cookie

cookie的特点

  1. 与服务器的交换方式:每次发起http请求,都会携带cookie,把cookie传向服务器端
  2. 生命周期:如果是会话cookie,浏览器关闭即销毁。如果是永久cookie,到了过期时间会自动销毁
  3. 存储数据的大小:一般cookie允许存储的数据可以认为是4k左右
  4. 同源策略:不同域名下的cookie不能共享。不同浏览器也不能共享同一域名下的cookie