Cookie简介

什么是Cookie

Cookie 是服务器发送给浏览器,由浏览器保存在本地的一些数据,在浏览器向目标服务器再次发起请求时,浏览器会携带Cookie domain与目标服务器domain相同或Cookie domain为目标服务器的父域名的cookie。

为什么需要Cookie

Cookie存在的意义要从HTTP协议说起,HTTP协议是一个无状态协议。无状态的含义就是客户端的每个请求对服务器来说都是全新的,即使客户端在前一秒发送请求告诉服务器我是userA,下一秒再发送请求时,服务器会响应,但是它不知道当前请求还是来自userA的。每个请求都是独立的,上一个请求和下一个请求之间是没有任何联系的。

HTTP协议设计为无状态的,主要是因为服务器需要面向全世界数十万、上百万的用户,而每个客户端(即浏览器)与服务器之间交换数据的间歇性较大(即传输具有突发性、瞬时性),并且网页浏览的联想性、发散性导致两次传送的数据关联性很低,大部分连接实际上会很空闲、无端占用资源。因此 HTTP 的设计者针对用户访问服务器的这些特点将协议设计为发起请求时建立连接、请求结束时释放连接,以尽快将资源释放出来服务其他客户端。

HTTP协议的无状态就带来了一些问题,比如我们通过用户名密码登录了网站,后续再次发请求给服务器时,服务器并没有办法识别到我们在上一个请求中提供的用户信息,除非我们在请求中再次携带用户信息。如果服务器想要识别客户端的身份,那就需要通过一些方法将客户端的身份信息记录下来。目前,有两种解决方案,那就是Cookie和Session。

 Cookie是通过客户端保存状态信息的解决方案。从定义上来说,Cookie就是由服务器发给客户端的特殊信息,这些信息中会包含客户端的身份信息,客户端在收到这些信息后会以文本文件的方式保存在客户端,之后客户端每次向服务器发送请求的时候都会在Cookie Header中带上这些信息。服务器在接收到来自客户端浏览器的请求之后,就能够通过分析Cookie Header中的信息得到客户端的身份信息。像很多网站的登录界面中的“请记住我”的功能就是通过Cookie实现的。 

Session是通过服务器保存状态信息的解决方案。当客户端访问服务器时,服务器会创建Session并保存在服务器上,同时将标识 Session 的 SessionId 返回给客户端浏览器,浏览器将这个 SessionId 保存起来,当客户端再次发送请求的时候,会将这个SessionId带上,服务器接受到请求之后就会依据SessionId找到相应的Session,从而获取到用户信息。这里SessionId在客户端的保存方式有多种,Cookie,Local Storage, Session Storage,页面隐藏表单等都可以。但还是用Cookie比较方便,不需要额外的处理,在发送请求的时候可以自动携带。所以归根结底,服务器想要获取状态信息都离不开Cookie。

Cookie的应用

Cookie 主要用于以下三个方面:

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

Cookie 最主要的作用就是对请求和响应的状态进行管理, 服务端通过在响应体中设置 Cookie (状态), 客户端会将 Cookie (状态) 存储起来, 之后客户端给向该服务器发起的每个请求,浏览器都会自动将 Cookie (状态)带上, 这样服务端就能够对客户端的身份进行识别。

Cookie是如何工作的

Set-Cookie Response Header:服务器端用于给客户端设置Cookie

HTTP/2.0 200 OK
Content-Type: text/html
Set-Cookie: yummy_cookie=choco
Set-Cookie: tasty_cookie=strawberry

Cookie Request Header:客户端用于向服务器端发送Cooki

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值