持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第28天
点击查看活动详情
一、简述 web 前端 cookie 机制,并结合该机制说明会话保持原理
Cookie 是进行网站用户身份,实现服务端 Session 会话持久化的一种非常好方式。Cookie 最早由 Netscape 公司开发,现在由 IETF 的 RFC 6265 标准备对其规范,已被所有主流浏览器所支持。
-
为什么需要 Cookie
HTTP 是一种无状态的协议,客户端与服务器建立连接并传输数据,数据传输完成后,连接就会关闭。再次交互数据需要建立新的连接,因此,服务器无法从连接上跟踪会话,也无法知道用户上一次做了什么。这严重阻碍了基于 Web 应用程序的交互,也影响用户的交互体验。如:在网络有时候需要用户登录才进一步操作,用户输入用户名密码登录后,浏览了几个页面,由于 HTTP 的无状态性,服务器并不知道用户有没有登录。
Cookie 是解决 HTTP 无状态性的有效手段,服务器可以设置或读取 Cookie 中所包含的信息。当用户登录后,服务器会发送包含登录凭据的 Cookie 到用户浏览器客户端,而浏览器对该Cookie 进行某种形式的存储(内存或硬盘)。用户再次访问该网站时,浏览器会发送该 Cookie(Cookie 未到期时)到服务器,服务器对该凭据进行验证,合法时使用户不必输入用户名和密码就可以直接登录。
本质上讲,Cookie 是一段文本信息。客户端请求服务器时,如果服务器需要记录用户状态,就在响应用户请求时发送一段 Cookie 信息。客户端浏览器保存该 Cookie 信息,当用户再次访问该网站时,浏览器会把 Cookie 做为请求信息的一部分提交给服务器。服务器检查 Cookie 内容,以此来判断用户状态,服务器还会对 Cookie 信息进行维护,必要时会对 Cookie 内容进行修改。 -
Cookie 的类型
Cookie 总时由用户客户端进行保存的(一般是浏览器),按其存储位置可分为:内存式Cookie 和硬盘式 Cookie。
内存式 Cookie 存储在内存中,浏览器关闭后就会消失,由于其存储时间较短,因此也被称为非持久 Cookie 或会话 Cookie。
硬盘式 Cookie 保存在硬盘中,其不会随浏览器的关闭而消失,除非用户手工清理或到了过期时间。由于硬盘式 Cookie 存储时间是长期的,因此也被称为持久 Cookie。