JavaScript cookie与session的使用及区别深入探究

目录
  • 1. cookie
    • 1.1 什么是cookie
    • 1.2 KOA中使用cookie
    • 1.3 expires和maxAge
    • 1.4 浏览器端设置和删除cookie
  • 2. session
    • 2.1 什么是session
    • 2.2 koa中使用session
  • 3. cookie和session的区别
  • 4. cookie和session的使用场景

1. cookie

1.1 什么是cookie

cookie是解决http无状态的一种方案。

服务端与服务端经过三次握手后建立连接,数据发送完后连接关闭,在之后的请求中服务端无法判断每次的请求是不是由同一个用户发出的。当后面的请求依赖之前的请求数据的时候,客户端每次请求数据的时候必须先将之前的数据保存下来然后放在后面请求体中。而cookie正是解决这个问题的方案,服务端在响应客户端请求的时候将cookie放在请求头中一起传递到客户端,在之后的请求中客户端都会带上这个cookie,服务端验证cookie做出响应。

1.2 KOA中使用cookie

router.get('/getCurrentUserInfo',async ctx=>{
 ctx.cookies.set('userInfo',999);
 ctx.body =  'success';
});

可以看到响应头里面包含set-cookie的字段

如果要设置中文的值需要处理下格式

  const str = new Buffer('hello cookie!').toString();
  ctx.cookies.set('userInfo',str);

ctx.cookies.set(name,value,conifg)还接受第三个参数config,用来配置cookie的作用范围和作用时间

ctx.cookies.set(u_id,111111,{
expires: new Date(),
maxAge: 1000 * 3600 * 4,
domain: '/',
path: '/',
httpOnly: false,
secure: false,
overWrite: false,
})

1.3 expires和maxAge

expires和maxAge都用来设置cookie的有效时间,expires是指定一个日期与客户端本地的时间进行比较,maxAge类似倒计时,cookie在设置后的若干毫秒内有效。本地的时间是可以被修改的,而同一台服务器的时间总是相同的,因此maxAge比expires更加稳定可靠。

// 使用expires
const expiresDate = new Date(Date.now() + 1000 * 3600 * 2);  // 2小时候后过期
ctx.cookie.set('u_id':11111,{
expires: expiresDate
});
// 使用maxAge
ctx.cookie.set('u_id':11111,{
expires: new Date(1000 * 3600 * 2);
});

1.4 浏览器端设置和删除cookie

在浏览器中直接通过document.cookie设置cookie的时候也可以配置domain、path、secure等属性但是无法设置httpOnly。

//设置cookie
const expiresDate = new Date(Date.now() + 1000 * 3600 * 4); // 4小时候过期
document.cookie = `userName=张三;path='/';expires=${expiresDate.toGMTString()}`;
//删除cookie
const expiresDate = new Date();
document.cookie = `userName=张三;path='/';expires=${expiresDate.toGMTString()}`;

要注意使用的是GMT字符串格式的时间

2. session

2.1 什么是session

session的工作原理和cookie非常类似,在cookie中存放一个sessionID,真实的数据存放在服务器端,客户端每次发送请求的时候带上sessionID,服务端根据sessionID进行数据的响应。

2.2 koa中使用session

安装和挂载

yarn add koa-session --save;

session的设置和获取

const kao = require('koa');
const session  = require('koa-session');
const app = new Koa();
const CONFIG = {
  key: 'koa.sess', /** (string) cookie key (default is koa.sess) */
  /** (number || 'session') maxAge in ms (default is 1 days) */
  /** 'session' will result in a cookie that expires when session/browser is closed */
  /** Warning: If a session cookie is stolen, this cookie will never expire */
  maxAge: 1000 * 3600 * 4,
  autoCommit: true, /** (boolean) automatically commit headers (default true) */
  overwrite: true, /** (boolean) can overwrite or not (default true) */
  httpOnly: true, /** (boolean) httpOnly or not (default true) */
  signed: true, /** (boolean) signed or not (default true) */
  rolling: false, /** (boolean) Force a session identifier cookie to be set on every response. The expiration is reset to the original maxAge, resetting the expiration countdown. (default is false) */
  renew: false, /** (boolean) renew session when session is nearly expired, so we can always keep user logged in. (default is false)*/
  secure: false, /** (boolean) secure cookie*/
  sameSite: null, /** (string) session cookie sameSite options (default null, don't set it) */
};
app.use(session(CONFIG, app));
// or if you prefer all default config, just use => app.use(session(app));
app.listen(3000,()=>{});

3. cookie和session的区别

  • cookie存储在客户端,session存储在服务端,session比cookie更安全
  • cookie的存储数据的格式只能是字符串,且最多只能存储4kb左右的数据,session能存储大量的数据且支持多样的数据格式如json
  • session 由于存储在服务端,当session多的时候会对服务器产生压力,影响服务器性能。

4. cookie和session的使用场景

  • 对于简单而且不敏感的数据通常使用cookie保存,如购物车信息、用户在站点的行为记录等
  • 对于复杂且敏感的数据使用session保存,如用户的账号信息等

到此这篇关于JavaScript cookie与session的使用及区别深入探究的文章就介绍到这了,更多相关JS cookie与session内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解node.js平台下Express的session与cookie模块包的配置

    首先下载两个模块包 session模块包:用于保持登录状态或保持会话状态等. npm install express-session --save-dev cookie模块包:用于解析cookie. npm install cookie-parser --save-dev 接着在app.js(我在node.js的配置中提到的,也就是服务器主文件)中配置: var session = require("express-session"); var cookie = require(&qu

  • JavaScript本地储存:localStorage、sessionStorage、cookie的使用

    javaScript有三种数据存储方式,分别是: sessionStorage localStorage cookier 1. sessionStorage sessionStorage仅在当前会话下有效,关闭页面或浏览器后被清除: setItem(key,value) 设置数据 getItem(key) 获取数据 removeItem(key) 移除数据 clear() 清除所有值 <script> // 添加数据 window.sessionStorage.setItem("na

  • jsp cookie+session实现简易自动登录

    本文实例为大家分享了jsp cookie+session实现简易自动登录的具体代码,供大家参考,具体内容如下 关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务器端的session对象失效. 如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间. login.jsp <%@ page language="java" contentType="text/html;

  • JavaScript cookie与session的使用及区别深入探究

    目录 1. cookie 1.1 什么是cookie 1.2 KOA中使用cookie 1.3 expires和maxAge 1.4 浏览器端设置和删除cookie 2. session 2.1 什么是session 2.2 koa中使用session 3. cookie和session的区别 4. cookie和session的使用场景 1. cookie 1.1 什么是cookie cookie是解决http无状态的一种方案. 服务端与服务端经过三次握手后建立连接,数据发送完后连接关闭,在之

  • Java中Cookie和Session详解及区别总结

    目录 会话技术 Cookie 概念 快速入门 实现原理 cookie的细节 Cookie的特点和作用 案例:记住上一次访问时间 分析 代码实现 Session 概念 快速入门 原理 细节 Session的特点 Session与Cookie的区别 会话技术 会话:一次会话中包含多次请求和响应. 一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止 功能:在一次会话的范围内的多次请求间,共享数据 方式: 客户端会话技术:Cookie 服务器端会话技术:Session Cookie

  • 浅谈cookie 和session 的区别

    具体来说 cookie 是保存在"客户端"的,而session是保存在"服务端"的 cookie 是通过扩展http协议实现的 cookie 主要包括 :名字,值,过期时间,路径和域: 如果cookie不设置生命周期,则以浏览器关闭而关闭,这种cookie一般存储在内存而不是硬盘上.若设置了生命周期则相反,不随浏览器的关闭而消失,这些cookie仍然有效直到超过设定的过 期 时间. session 一种类似散列表的形式保存信息, 当程序需要为某个客户端的请求创建一个

  • 详解PHP中cookie和session的区别及cookie和session用法小结

    具体来说 cookie 是保存在"客户端"的,而session是保存在"服务端"的 cookie 是通过扩展http协议实现的 cookie 主要包括 :名字,值,过期时间,路径和域: 如果cookie不设置生命周期,则以浏览器关闭而关闭,这种cookie一般存储在内存而不是硬盘上.若设置了生命周期则相反,不随浏览器的关闭而消失,这些cookie仍然有效直到超过设定的过 期 时间. session 一种类似散列表的形式保存信息, 当程序需要为某个客户端的请求创建一个

  • PHP中cookie和session的区别实例分析

    cookie和session是PHP程序设计中非常重要的技巧.深入理解并掌握cookie和session的应用是进行PHP程序设计的基础.本文就以实例形式来分析一下二者之间的区别.具体分析如下: 1.Cookie cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制. PHP在http协议的头信息里发送cookie, 因此 setcookie() 函数必须在其它信息被输出到浏览器前调用,这和对 header() 函数的限制类似.   1.1 设置cookie:     可以用

  • Python Flask中Cookie和Session区别详解

    目录 前言 安装 创建虚拟环境 进入虚拟环境 安装 flask Cookie的使用 Session的使用 前言 本篇文章,阐述一下Flask中Cookie和Session 为什么要说Cookie和Session呢? 答:因为http请求是无状态的,怎么理解呢?当你访问B站时,如果你没有Cookie或者Session,B站就认为你是一个没有登录的用户.如果你有Cookie或Session,那么B站就知道你登录了,并且知道你是谁.所以可以把跟你相关的资料返回 给你两者的区别: 答:Cookie是明文

  • Django框架cookie和session方法及参数设置

    目录 1. cookie和session介绍 1.1 cookie 简介 1.2 cookie的缺陷 1.3 session简介 1.4 session与cookie的区别 2. 设置cookie 2.1 设置cookie 2.2 获取cookie 2.3 删除cookie 2.4 设置过期时间和加盐 2.5 cookie的其他参数 3. 设置 session 3.1 设置,修改,删除session 3.2 session的其他方法 3.3 session的其他配置(配置文件中) 1. cook

  • 对比分析php中Cookie与Session的异同

    让大家对Cookie和Session有一个更深入的了解,并对自己的开发工作中灵活运用带来启示. 一.cookie机制 Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器.IETF RFC 2965 HTTP State Management Mechanism 是通用cookie规范.网络服务器用HTTP头向客户端发送cookies,在客户终端,浏览器解析这些cookies并将它们保存为一个本地文件,它会自动将同一服务器的任何请求缚上这些cookies . 具体来说

  • php禁用cookie后session设置方法分析

    本文实例讲述了php禁用cookie后session设置方法.分享给大家供大家参考,具体如下: 我们都知道当在session 会话有基于cookie和基于url两种传递SESSIONID的方法.为了实现客户端禁止cookie发送的情况也不影响客户登陆网站,可以设置 php.ini中 session.use_trans_sid=1 ,表示当客户端浏览器禁止cookie的时候,页面上的链接会基于url传递SESSIONID.但是很多人仅仅设置了这一个选项并没有达到效果,本人也 遇到此问题,后来一番研

  • PHP5中Cookie与 Session使用详解

    1.Cookie和Session简介与区别 在非常多时候,我们需要跟踪浏览者在整个网站的活动,对他们身份进行自动或半自动的识别(也就是平时常说的网站登陆之类的功能),这时候,我们常采用Cookie与 Session来跟踪和判断. 区别 Session信息是存放在server端,但session id是存放在client cookie的,当然php的session存放方法是多样化的,这样就算禁用cookie一样可以跟踪 Cookie是完全保持在客户端的如:IE firefox 当客户端禁止cook

随机推荐