关于 Cookie的优缺点

4,550 阅读3分钟

什么是Cookie?

  • Cookie本意是指就着牛奶一起吃的点心,在 Inernet上,Cookie就是小量信息。
  • Cookie是由web服务器创建并保存在用户浏览器上的小文本文件,它以key/value的形式保存用户相关信息,这些数据通常会经过加密处理。当用户连接到服务器,web站点可以访问Cookie信息

Cookie有什么作用

  • Cookies的两个主要用途:储存用户信息和个性化定制。
  • Cookies最典型的应用是判定注册用户是否已经登录网站。
  • 另一个重要应用场景是“购物车”之类处理,用户可能在一段时间内在同一网站不同页面选择不同商品,这些信息都会被写入cookie以便最后结账使用。

Cookie的使用

  • 客户端用户如果设置禁止 Cookie, 则 Cookie不能建立。 并且在客户端 , 一个 浏览器能创建的Cookie数量最多为 300个 , 并且每个不能超过 4KB,每个 Web 站点能设置的 Cookie 总数不能超过 20个。

  • Cookie在生成时就会被指定一个Expire值,这就是Cookie的生存周期,在这个周期内Cookie有效,超出周期Cookie就会被清除。有些页面将Cookie的生存周期设置为“0”或负值,这样在关闭浏览器时,就马上清除Cookie,不会记录用户信息,更加安全。

  • 如果在一台计算机中安装多个浏览器,每个浏览器都会在各自独立的空间存放cookie。因为cookie中不但可以确认用户,还能包含计算机和浏览器的信息,所以一个用户用不同的浏览器登录或者用不同的计算机登录,都会得到不同的cookie信息,另一方面,对于在同一台计算机上使用同一浏览器的多用户群,cookie不会区分他们的身份,除非他们使用不同的用户名登录。

  • Cookie是利用了网页代码中的HTTP头信息进行传递的,浏览器的每一次网页请求,都可以伴随Cookie传递,例如,浏览器的打开或刷新网页操作。服务器将Cookie添加到网页的HTTP头信息中,伴随网页数据传回到你的浏览器,浏览器会根据你电脑中的Cookie设置选择是否保存这些数据。如果浏览器不允许Cookie保存,则关掉浏览器后,这些数据就消失。Cookie在电脑上保存的时间是不一样的,这些都是由服务器的设置不同决定的。Cookie有一个Expires(有效期)属性,这个属性决定了Cookie的保存时间,服务器可以通过设定Expires字段的数值,来改变Cookie的保存时间。如果不设置该属性,那么Cookie只在浏览网页期间有效,关闭浏览器,这些Cookie自动消失,绝大多数网站属于这种情况。通常情况下,Cookie包含Server、Expires、Name、value这几个字段,其中对服务器有用的只是Name和value字段,Expires等字段的内容仅仅是为了告诉浏览器如何处理这些Cookies。

谈谈Cookie的弊端

  • Cookie`数量和长度的限制。每个domain最多只能有20条cookie,每个cookie长度不能超过4KB,否则会被截掉。在当今新的浏览器和客户端设备版本中,支持 8192 字节的 Cookie 大小已愈发常见。
  • 用户配置为禁用。有些用户禁用了浏览器或客户端设备接收 Cookie 的能力,因此限制了这一功能
  • 由于在HTTP请求中的cookie是明文传递的,潜在的安全风险,Cookie 可能会被篡改
  • 有些状态不可能保存在客户端
  • cookie会被附加在每个HTTP请求中,所以无形中增加了流量
  • cookie一般不可跨域使用
  • 没有封装好的setCookie和getCookie方法,需要开发者自省封装