先谈 cookie

  网络传输基于的Http协议,是无状态的协议,即每次连接断开后再去连接,服务器是无法判断此次连接的客户端是谁。

  如果每次数据传输都需要进行连接和断开,那造成的开销是很巨大的。

  为了解决这个问题,cookie就应运而生,当用户登陆成功,服务器会在返回响应数据的同时也携带着cookie给到客户端,

  之后客户端每次发起请求只要携带着这个cookie,那就免去登录的步骤。cookie是保存在客户端的数据。

  这确实极大改善了网络传输的效率。当时由于cookie是保存在浏览器客户端的,所以也很容易被提取,这在安全方面存在隐患。

再谈session

session的实现需要依赖于cookie,其本质也是通过以cookie的方式向客户端发送随机字符串,每次客户端发起请求时只要携带

该随机字符串便可很容易进行验证。下面大概写下整个session过程的原理。

  1. 用户发出登录请求
  2. 判断账户密码是否正确
  3. 如正确,则返回数据并在cookie中写随机字符串(sessionID),并且在服务端以{随机字符串:{'k':'v'}}的形式存储用户相关数据
  4. 下次同个客户发送请求,携带cookie(包含sessionID)
  5. 服务端会判断cookie是否包含sessionID,如有再去服务器内存中查询该sessionID 是否有对应的数据,如果有,则说明是登录过的用户,返回数据。

  session是保存在服务端的数据。

  由此可见,session是不会向客户端发送敏感信息的,随机字符串即使被人窃取,也无法简单在客户端被恶意行为伪造请求。

浅谈 session 会话的原理的更多相关文章

  1. TODO:浅谈pm2基本工作原理

    TODO:浅谈pm2基本工作原理 要谈Node.js pm2的工作原理,需要先来了解撒旦(Satan)和上帝(God)的关系. 撒旦(Satan),主要指<圣经>中的堕天使(也称堕天使撒旦 ...

  2. 浅谈Session的使用(原创)

    目录 浅谈Session的使用(原创) 1.引言 2.Session域的生命周期 2.1 Session的创建 2.2 Session的销毁 3.那么,session被销毁后,其中存放的属性不就都访问 ...

  3. 浅谈springboot自动配置原理

    前言 springboot自动配置关键在于@SpringBootApplication注解,启动类之所以作为项目启动的入口,也是因为该注解,下面浅谈下这个注解的作用和实现原理 @SpringBootA ...

  4. 浅谈SpringBoot核心注解原理

    SpringBoot核心注解原理 今天跟大家来探讨下SpringBoot的核心注解@SpringBootApplication以及run方法,理解下springBoot为什么不需要XML,达到零配置 ...

  5. 浅谈session/cookie

    Session 和Cookie是常用的Web跟踪技术.Cookie保存在客户端,而Session则保存在服务器端,二者结合使用来跟踪用户的会话状态,是http协议的一种扩展技术.之所以说是一种扩展技术 ...

  6. 浅谈session测试

    Session 是用于保持状态的基于 Web 服务器的方法,在 Web 服务器上保持用户的状态信息供在任何时间从任何页访问.Session 允许通过将对象存储在 Web 服务器的内存中在整个用户会话过 ...

  7. 浅谈Session与Cookie的关系

    一.概念理解: 首先cookie是服务端识别客户的唯一标识的依据,客户在访问网站时候,服务端为了记住这个客户,会在服务端按照它的规则制作一个cookie数据,会将这个cookie数据保留在服务端一段时 ...

  8. 浅谈session,cookie,sessionStorage,localStorage的区别及应用场景

    浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互. 一.cookie和session cookie和session都是用来跟踪浏览器 ...

  9. (转)浅谈Session与Cookie的区别与联系

    一.Session的概念 Session 是存放在服务器端的,类似于Session结构来存放用户数据,当浏览器 第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标 ...

随机推荐

  1. 巨蟒python全栈开发-第19天 核能来袭-反射

    一.今日主要内容 1.isinstance,type,issubclass A.isinstance: 判断你给对象是否是xx类型的. (向上判断) B.type: 返回xxx对象的数据类型 C.is ...

  2. 第03章—打造RESTful风格API

    spring boot 系列学习记录:http://www.cnblogs.com/jinxiaohang/p/8111057.html 码云源码地址:https://gitee.com/jinxia ...

  3. 第08章—整合Spring Data JPA

    spring boot 系列学习记录:http://www.cnblogs.com/jinxiaohang/p/8111057.html 码云源码地址:https://gitee.com/jinxia ...

  4. python基础之类和对象、对象之间的交互、类名称空间与对象/实例名称空间

    一 面向对象初识 Python要么是面向过程要么是面向对象. 概念及优缺点: 面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东 ...

  5. Go语言版本的helloworld

    新建一个project,然后建立一个main目录,在main目录下新建一个go类文件:main.go 内容如下: package main import "fmt" func ma ...

  6. C/C++运算符及其优先级

    1.自增自减 (1)前置运算:"先变后用"   如++i. 后置运算:"先用后变"   如i--. 比如: int i = 5. y1 = ++i: y2 = ...

  7. android studio中取消关联git

    Android studio取消关联Git 步骤如下 settings->version control 这里是已经取消关联的 如果关联 按住减号即可

  8. python16_day12【html、css】

    一.HTML 所有HTML标签操作 <!DOCTYPE html> <html lang="en"> <head> <!--编码--> ...

  9. python16_day08【异常、多线程】

    一.反射及相关 1.isinstance(obj, cls) 检查是否obj是否是类 cls 的对象 class Foo(object): pass obj = Foo() isinstance(ob ...

  10. image_Magic图片处理功能

    :] 来自为知笔记(Wiz)