1.cookie是存储于访问者的计算机中的数据,用于同一浏览器访问同一域的时候共享数据
2.HTTP是无状态协议。也就是说:当你浏览了一个页面,然后跳转到同一个网站的另一个页面,服务器无法认识到这是同一个浏览器在访问同一个网站。每次的访问是没有关系的,也就是说服务器无法检测到这个状态

cookie特点:保存在客户端、用于同一浏览器访问同一个域的时候共享数据
作用,例如:
1.保存用户信息
2.浏览历史记录
3.10天免登录

正文开始

1.koa中设置cookie的值

1.设置cookie:

router.get('/', async (ctx, next) => {ctx.cookies.set("userInfo","gouzi",{maxAge:1000*60*60})await ctx.render('index', {title: 'Hello Koa 啊啊啊啊!'})
})

2.获取cookie:

let userInfo = ctx.cookies.get("userInfo");

设置cookie的第三个对象里面参数

3.存储值为汉字的cookie(nodejs的cookie是不支持直接存储汉字的)
先转化为buffer(let a = new Buffer(“张三”))

router.get('/', async (ctx, next) => {let name = new Buffer("狗子").toString('base64')ctx.cookies.set("userInfo",name,{maxAge:1000*60*60})
})

再转化为汉字字符串(.toString())

router.get('/test', async (ctx, next) => {//从ctx里面获取get传值,query是格式化之后的,querystring是字符串的console.log(ctx.query)let userInfo = ctx.cookies.get("userInfo");let name = new Buffer(userInfo,'base64').toString()console.log(name)//ctx里面的request对象是那一大串东西ctx.body = 'koa2 string'
})

2.koa session的使用(包名:koa-session):

session是基于cookie的原理

1.安装
npm install koa-session
2.引入

const session = require('koa-session')

3.配置中间件

app.keys = ['some secret hurr'];  /* cookie的签名 默认的(不用管)*/const CONFIG = {key: 'koa:sess', /* 默认的cookie签名,默认的(不用管) */maxAge: 86400000,/* cookie的最大过期时间 */renew: true, /** cookie(session)快过期时自动重新设置*/rolling: false, /** 每次请求强行更新设置cookie(session),使他不过期 */httpOnly: true, /** 是否只有服务端能访问 */signed: true, /** 默认签名与否 */overwrite: true, /** 无效属性 */autoCommit: true, /** (boolean) automatically commit headers (default true) */};app.use(session(CONFIG, app));

4.使用


router.get('/login', function (ctx, next) {ctx.session.username="狗子"    //设置sessionctx.body = '登陆成功'
})router.get('/buy', async (ctx, next)=> {console.log(ctx.session.username) //读取sessionctx.body = 'this is a users response!'
})

cookie和session的区别如下
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。

3、cookie 是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个WEB站点会话间持久的保持数据。

4、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。

5、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

6、session其实指的就是访问者从到达某个特定主页到离开为止的那段时间。 Session其实是利用Cookie进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器上创建了一个Cookie,当这个Session结束时,其实就是意味着这个Cookie就过期了。
注:为这个用户创建的Cookie的名称是aspsessionid。这个Cookie的唯一目的就是为每一个用户提供不同的身份认证。

7、cookie和session的共同之处在于:cookie和session都是用来跟踪浏览器用户身份的会话方式。

如果客户端浏览器将Cookie功能禁用,或者不支持Cookie怎么办?
例如,绝大多数的手机浏览器都不支持Cookie。Java Web提供了另一种解决方案:URL地址重写。

URL地址重写是对客户端不支持Cookie的解决方案。URL地址重写的原理是将该用户Session的id信息重写到URL地址中。服务器能够解析重写后的URL获取Session的id。这样即使客户端不支持Cookie,也可以使用Session来记录用户状态。HttpServletResponse类提供了encodeURL(String url)实现URL地址重写,该方法会自动判断客户端是否支持Cookie。如果客户端支持Cookie,会将URL原封不动地输出来。如果客户端不支持Cookie,则会将用户Session的id重写到URL中。

使用cookie和session的具体场景

一般来说,登陆验证信息,客户的私人信息,如姓名,电话等,应该放在Session中.Cookie则用于用户登陆网站时的自动登陆以及类似"购物车"的处理.使用Cookie保存信息时最好通过加密形式来保存数据,同时是否保存登陆信息,需要由用户自行选择

nodejs的koa中cookie和session的使用,cookie和session的区别相关推荐

  1. koa中使用cookie 和session

    在koa中使用cookie app.keys = ['im a newer secret'] //设置签名的 Cookie 密钥. // 设置cookie app.use(async ctx => ...

  2. ASP.NET中实现页面间的参数传递 QueryString\Application\Session\Cookie

    一.使用QueryString 使用QueryString在页面间传递值是一种非常常见的方法,我们在ASP中就常常用到. (1)优点和缺点     优点:     1.使用简单,对于安全性要求不高时传 ...

  3. asp.net 获取客户端cookie_开发中你一定碰到过的cookie和session问题,今天一并帮你解决!...

    一.会话的概念 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 二.会话过程中要解决的一些问题 每个用户在使用浏览器与服务器进行 ...

  4. Flask 框架中 上下文基础理念,包括cookie,session存储方法,requset属性,current_app模块和g模块...

    Flask中上下文,分为请求上下文和应用上下文.既状态留存 ,就是把变量存在某一个地方可以调用 请求上下文:实际就是request和session用法理念,既都是可以存储东西. 应用上下文:既变量共享 ...

  5. HTML用cookie实现自动登录,用cookie实现websocket自动登录,session状态保留。

    原标题:用cookie实现websocket自动登录,session状态保留. 会话状态的保留,即登录状态保持,是很常见.很常用的功能. 本文将介绍,在NodeJS开发中,如何实现websocket连 ...

  6. Go 语言 Session机制和 Cookie机制

    一.会话机制 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie 通过在客户端记录信息确定用户身份,Sessio ...

  7. 设置cookie存活时间_Django之cookie、session、token

    客户端会话技术:cookie 服务端会话技术:session 自定义会话技术:token 一.cookie cookie本身由服务器端生成,通过Response将cookie写到浏览器上,下一次再次访 ...

  8. 【学习笔记】cookie、session、token和分布式session

    文章目录 cookie和Session session和token cookie和token总结 分布式Session cookie和Session 为什么要有session的出现? 答:是由于网络中 ...

  9. Cookie和Session-学习笔记04【Session之验证码案例】

    Java后端 学习路线 笔记汇总表[黑马程序员] Cookie和Session-学习笔记01[Cookie_快速入门.Cookie_细节] Cookie和Session-学习笔记02[Cookie案例 ...

最新文章

  1. 关于echars中雷达图的一些配置
  2. atitit.微信支付的教程文档 attilax总结
  3. unity如何让物体与特定物体之间不发生碰撞
  4. linux内核等价多路径路由,Linux内核分析 - 网络[四]:路由表
  5. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 4丨员工薪水中位数【难度困难】
  6. Jquery表单验证 只能输入数字,
  7. cvf命令报错 linux,linux命令大全
  8. 第2章 业务:数据驱动运营
  9. cad2006安装计算机中没有cad,CAD2006如何安装?AutoCAD2006安装教程图解
  10. 法大大完成3.98亿元C轮融资,虎环球基金和腾讯联合领投...
  11. 《稀缺》塞德希尔·穆来纳森 / 埃尔德·沙菲尔
  12. Cool Edit Pro 2.0 Resample.xfm
  13. 翁恺老师C语言程序设计网课(THE END)
  14. chrom如何兼容本地file文件
  15. 56岁才创业, 如今年利润却是华为1.6倍
  16. 关于列表,网格显示一律使用RV
  17. 瑞芯微RK3399主板开发,RK3399芯片设计参数分析
  18. 【】oracle 11g 新特性
  19. MYC归来(2)第三次测试
  20. Chatgpt这么智能,以后会不会取代掉人类?

热门文章

  1. Sharpmap AjaxMapControl 分析
  2. UVA11764 Jumping Mario【Ad Hoc】
  3. Spring 各种注解(@)的含义与认识
  4. 网络基石 —— ADSL
  5. 英文的写作 —— 词汇的积累(环境的描写、写人)
  6. Trick(十)——any/all 实现
  7. C基础——文本格式和二进制格式的区别
  8. C++11::lambda 的用法
  9. 武春岭 《C语言程序设计》教案PPT,重庆出版社出版,李勇主编的大一C语言课程ppt第1章.ppt...
  10. html让页面两边都留点空位,标记语言——CSS布局_HTML/Xhtml_网页制作