HTTP Cookies 初解

1. Cookie 是什么

HTTP Cookie(也叫Web Cookie或浏览器Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie使基于无状态的HTTP协议记录稳定的状态信息成为了可能。

2. Cookie 的分类

Cookie总是保存在客户端中,按在客户端中的存储位置,内存 Cookie 和硬盘 Cookie。 按存在时间,可分为非持久Cookie和持久Cookie。

3. Cookie 的用途

因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现。Cookie就是用来绕开HTTP的无状态性的“额外手段”之一。服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。 Cookie主要用于以下三个方面:

  • a. 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
  • b. 个性化设置(如用户自定义设置、主题等)
  • c. 浏览器行为跟踪(如跟踪分析用户行为等)

4. Cookie 的缺陷

Cookie曾一度用于客户端数据的存储,因当时并没有其它合适的存储办法而作为唯一的存储手段,但现在随着现代浏览器开始支持各种各样的存储方式,Cookie渐渐被淘汰。由于服务器指定Cookie后,浏览器的每次请求都会携带Cookie数据,会带来额外的性能开销(尤其是在移动环境下)。新的浏览器API已经允许开发者直接将数据存储到本地,如使用 Web storage API (本地存储和会话存储)或 IndexedDB 。

  • a. Cookie会被附加在每个HTTP请求中,所以无形中增加了流量。
  • b. 由于在HTTP请求中的Cookie是明文传递的,所以安全性成问题,除非用HTTPS。
  • c. Cookie的大小限制在4KB左右,对于复杂的存储需求来说是不够用的。

5. Cookie 的使用(部分)

a. 创建 Cookie

服务器设置响应头,添加 Set-Cookie 选项,另外,Cookie的过期时间、域、路径、有效期、适用站点都可以根据需要来指定。

Set-Cookie: <cookie名>=<cookie值>
复制代码

b. 设置cookie过期时间

i. setMaxAge

cookie.setMaxAge(0);//不记录cookie
cookie.setMaxAge(-1);//会话级cookie,关闭浏览器失效
cookie.setMaxAge(60*60);//过期时间为1小时
复制代码

ii. 过时了的expires

Set-Cookie: name=Nicholas; expires=Sat, 02 May 2009 23:38:25 GMT
//星期六 5月2号 2009年 23:38:25时过期
复制代码

Expires指的时间是本地时间,如果用户本地时间错乱就不行了

6. 参考链接

  • https://zh.wikipedia.org/wiki/Cookie
  • https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Cookies

转载于:https://juejin.im/post/5ae32e9a6fb9a07aa349fe80

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值