赞
踩
首先说区别之前 追溯一下为什么需要cookie session这些鬼东西 我们都知道http协议是一种无状态协议(这次请求和下次请求是没有任何关联的) 这种协议的优点是飞快!但是缺点是两次请求无法关联 也就是我登陆之后下一次操作服务器就不认识我了
那么这时候cookie session用生活场景举例就是 去澡堂洗澡 为了辨别我是谁 给我发了一个手牌 这个手牌即是session 作为唯一标识 关联之后的任何请求
web服务器产生,保存在客户端;
(1)浏览器第一次访问服务端时,服务器此时因不知道它身份所以创建的一个独特的身份标识数据,格式为key=value键值对,放入到set-cookie字段里面,随着响应报文一起发送给浏览器
(2)浏览器看到有set-cookie的字段以后就知道这是服务器给的身份标识 于是就保存起来 下次请求时会自动将此key=value值放入到cookie字段中发给服务端 服务端收到请求报文后 发现cookie字段中有值 就能根据此值识别用户的身份然后提供个性化服务
cookie分为持久化和非持久化
持久化的cookie可以存在于硬盘中 浏览器关闭的话 也不会影响;非持久化的cookie 存在于内存中 如果浏览器关闭的话 cookie也会随之消失
登陆记住用户名
浏览器记录用户已经浏览过的网页
在登陆进某一网页之后 Fn+F12打开开发者工具按照如下位置查看
note: cookie数据有失效时间看expire值
web服务器 保存在服务器
当用户登录了系统 服务器端的web容器就会创建一个session 此会话中可以保存登录用户的信息 并且也是以键值对的形式去保存的 系统通过session技术来做的鉴权 因为只有当用户登录了才可以访问系统中的页面和数据
一般只保存用户的用户名 时长默认是30min 这也是为什么当我们登陆系统一段时间后不使用就需要重新登录 因为30min之后session就已经丢失了
和cookie查看方法一致 注意这里的ASP.NET_SessionId这个名字不是固定的
web服务器 保存在数据库中
(1)用户第一次登录的时候 服务端会产生一个本地token token会存在于服务器的数据库上 然后将这个token返回给浏览器
(2)客户端收到token之后将token存储在本地上
(3)客户端再次发送请求的时候 会将token发送到服务器上
(4)服务端收到这个token的时候会将token与本地的token进行比较 可以来验证身份
一般用于app项目登录鉴权或者接口鉴权 因为app项目和接口客户端都不是浏览器 因此就没有cookie和session了 所以通过token来鉴权
有些系统的token直接显示在后面的页面上 而接口的token一般在登录接口的返回值里面
总的来说 它们都是web服务器产生的 只是保存在不同的地方 分别是 哭护短 服务器 数据库中 所以它们在项目中应用场景也不一样
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。