浏览器cookie

什么是Cookie 因为HTTP协议是无状态的,导致两个执行成功的请求之间是没有关系的。这就带来了一个问题,用户没有办法在同一个网站中进行连续的交互,比如在一个电商网站里,用户把某个商品加入到购物车,切换一个页面后再次添加了商品,这两次添加商品的请求之间没有关联,浏览器无法知道用户最终选择了哪些商品。而Cookie就是用来解决这类问题的 Cookie,又称为‘小甜饼’,是服务器发送到浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发送请求时携带并发送到服务器上(服务器可以设置或读取Cookies中包含信息),借此维护用户跟服务器会话中的状态。 Cookie主要用于以下三个方面: 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息) 个性化设置(如用户自定义设置、主题等) 浏览器行为跟踪(如跟踪分析用户行为等) 分类 Cookie总是保存在客户端中,可以简单的分为会话期Cookie和持久性Cookie 会话期Cookie是最简单的Cookie:浏览器关闭之后它会被自动删除,也就是说它仅在会话期内有效。会话期Cookie不需要指定过期时间(Expires)或者有效期(Max-Age)。需要注意的是,有些浏览器提供了会话恢复功能,这种情况下即使关闭了浏览器,会话期Cookie也会被保留下来,就好像浏览器从来没有关闭一样。 持久性Cookie和关闭浏览器便失效的会话期Cookie不同,持久性Cookie设置了特定的过期时间(Expires)或有效期(Max-Age)。如: Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT; 持久性Cookie保存在硬盘里,除非用户手工清理或到了过期时间,否则Cookie不会被删除,其存在时间是长期的。 若设置了过期时间,则是持久性Cookie(浏览器会把Cookie存成文件保存到硬盘上),未设置则是会话期Cookie (浏览器关闭时将会被删掉) 另外: 登录页面上的记住我或十天内免登录的功能就是通过设置cookie的过期时间来实现的,例如把过期时间设置成十天后,就实现了十天内免登录 过程 设置Cookie过程 以登录为例: 写代码实际操作下: 配置后端服务testServer,在终端执行以下命令: mkdir testServer && cd testServer && touch app.js && npm init -y && npm i -D express cookie-parser app.js添加如下内容: //app.js const express = require('express') const cookieParser = require('cookie-parser') const app = express(); const port = 3000 app.use(cookieParser()) app.get('/', (req, res) => { console....

January 11, 2019 · 3 min