浅谈 session 会话的原理
先谈 cookie
网络传输基于的Http协议,是无状态的协议,即每次连接断开后再去连接,服务器是无法判断此次连接的客户端是谁。
如果每次数据传输都需要进行连接和断开,那造成的开销是很巨大的。
为了解决这个问题,cookie就应运而生,当用户登陆成功,服务器会在返回响应数据的同时也携带着cookie给到客户端,
之后客户端每次发起请求只要携带着这个cookie,那就免去登录的步骤。cookie是保存在客户端的数据。
这确实极大改善了网络传输的效率。当时由于cookie是保存在浏览器客户端的,所以也很容易被提取,这在安全方面存在隐患。
再谈session
session的实现需要依赖于cookie,其本质也是通过以cookie的方式向客户端发送随机字符串,每次客户端发起请求时只要携带
该随机字符串便可很容易进行验证。下面大概写下整个session过程的原理。
- 用户发出登录请求
- 判断账户密码是否正确
- 如正确,则返回数据并在cookie中写随机字符串(sessionID),并且在服务端以{随机字符串:{'k':'v'}}的形式存储用户相关数据
- 下次同个客户发送请求,携带cookie(包含sessionID)
- 服务端会判断cookie是否包含sessionID,如有再去服务器内存中查询该sessionID 是否有对应的数据,如果有,则说明是登录过的用户,返回数据。
session是保存在服务端的数据。
由此可见,session是不会向客户端发送敏感信息的,随机字符串即使被人窃取,也无法简单在客户端被恶意行为伪造请求。
浅谈 session 会话的原理的更多相关文章
- TODO:浅谈pm2基本工作原理
TODO:浅谈pm2基本工作原理 要谈Node.js pm2的工作原理,需要先来了解撒旦(Satan)和上帝(God)的关系. 撒旦(Satan),主要指<圣经>中的堕天使(也称堕天使撒旦 ...
- 浅谈Session的使用(原创)
目录 浅谈Session的使用(原创) 1.引言 2.Session域的生命周期 2.1 Session的创建 2.2 Session的销毁 3.那么,session被销毁后,其中存放的属性不就都访问 ...
- 浅谈springboot自动配置原理
前言 springboot自动配置关键在于@SpringBootApplication注解,启动类之所以作为项目启动的入口,也是因为该注解,下面浅谈下这个注解的作用和实现原理 @SpringBootA ...
- 浅谈SpringBoot核心注解原理
SpringBoot核心注解原理 今天跟大家来探讨下SpringBoot的核心注解@SpringBootApplication以及run方法,理解下springBoot为什么不需要XML,达到零配置 ...
- 浅谈session/cookie
Session 和Cookie是常用的Web跟踪技术.Cookie保存在客户端,而Session则保存在服务器端,二者结合使用来跟踪用户的会话状态,是http协议的一种扩展技术.之所以说是一种扩展技术 ...
- 浅谈session测试
Session 是用于保持状态的基于 Web 服务器的方法,在 Web 服务器上保持用户的状态信息供在任何时间从任何页访问.Session 允许通过将对象存储在 Web 服务器的内存中在整个用户会话过 ...
- 浅谈Session与Cookie的关系
一.概念理解: 首先cookie是服务端识别客户的唯一标识的依据,客户在访问网站时候,服务端为了记住这个客户,会在服务端按照它的规则制作一个cookie数据,会将这个cookie数据保留在服务端一段时 ...
- 浅谈session,cookie,sessionStorage,localStorage的区别及应用场景
浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互. 一.cookie和session cookie和session都是用来跟踪浏览器 ...
- (转)浅谈Session与Cookie的区别与联系
一.Session的概念 Session 是存放在服务器端的,类似于Session结构来存放用户数据,当浏览器 第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标 ...
随机推荐
- JQuery设置checkbox选中或取消等相关操作
$("[name='checkbox']").attr("checked",'true');//全选 $("[name='checkbox']&quo ...
- JS取得不同连接的地址,并打开新窗口
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DT ...
- Django - 自定义分页、FBV和CBV
一.自定义分页(优势在于能够保存搜索条件) """ 分页组件使用示例: 1) 先取出所有数据USER_LIST 2) 实例化: obj = Pagination(requ ...
- Python基础教程-条件判断和循环
Python条件判断 在Python中用if语句实现: age = 20 if age >= 18: print 'your age is :',age print 'adult' 根据Pyth ...
- 访问hdfs里的文件
准备工作: 给hdfs里上传一份用于测试的文件 [root@master ~]# cat hello.txt hello 1 hello 2 hello 3 hello 4 [root@master ...
- PyNest——part 4: topologically structured networks
part 4: topologically structured networks incorporating structure in networks of point neurons 如果我们使 ...
- Xilinx中解决高扇出的方法
Fanout,即扇出,指模块直接调用的下级模块的个数,如果这个数值过大的话,在FPGA直接表现为net delay较大,不利于时序收敛.因此,在写代码时应尽量避免高扇出的情况.但是,在某些特殊情况下, ...
- win10下安装TensorFlow(CPU only)
TensorFlow安装过程 1 环境 我的安装环境:win10 + 64位 +miniconda2+miniconda创建的python3.5.5环境+pip 由于目前TensorFlow在wind ...
- [笔记]Go语言写文件几种方式性能对比
Go语言中写文件有多种方式,这里进行如下几种方式的速度对比: 打开文件,写入内容,关闭文件.如此重复多次 打开文件,写入内容,defer 关闭文件.如此重复多次 打开文件,重复多次写入内容,defer ...
- maven打包生成war