Session是什么?它与Cookie有什么区别?
你好,是我琉忆。
今天我们讲一讲Session与Cookie的区别
1、Session对象
上一节简单介绍了Cookie,接下来简单介绍Session。Session和Cookie都是会话管理技术的一种。可能你会奇怪记住用户的信息有Cookie就够了,为什么还需要Session?那么我们带着这个疑问一起来看看Session,以及对比两者的区别。
2、什么是Session?
Session的翻译有:一场; 一节; 一段时间; (法庭的)开庭,开庭期; (议会等的)会议,会期;学年; (酒吧中)演奏会(尤指演奏爱尔兰音乐)等等多种意思。一般我们拿来指代“会议”或者“会期”的意思。但是实际我们说的时候都统一用英文名称来称呼这种技术,它和Cookie一样都算是计算机术语。
Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web页时,如果该用户还没有会话,则Web服务器将自动创建一个 Session对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在Session对象中。
当用户登录或访问一些初始页面时,服务器会为客户端分配一个 SessionID。SessionID 是一个加密的随机数字,在 Session 的生命周期中保存在客户端。它可以保存在用户机器的 Cookie 中,也可以通过 URL 在网络中进行传输。用户通过 SessionID 可以注册一些特殊的变量,称为会话变量,这些变量的数据保存在服务器端。在一次特定的网站连接中,如果客户端可以通过 Cookie 或 URL 找到SessionID,那么服务器就可以根据客户端传来的 SessionID 访问会话保存在服务器端的会话变量。Session 的生命周期只在一次特定的网站连接中有效,当关闭浏览器后,Session 会自动失效,之前注册的会话变量也不能再使用。
【如果你还没有关注我的话,可以点点关注,下次更新精彩博文我通知你。】
3、为什么需要Session
需要Session的主要原因是它存储更安全,一般用户的登录状态都是使用Session来存,这样在每个页面之间切换时,我们都可以追踪到当前用户的信息,显示用户的登录状态。那么为什么Session存储更安全呢?原因是因为它的文件存储在服务器端,用户是没有权限操作服务器的,除了服务器管理员有权限操作外。这样就可以避免非法用户窃取Session中的数据,从而保证了数据的安全性。反而客户端的电脑有被黑客入侵窃取文件的风险,或者是别的用户使用该客户端电脑时,直接窃取Cookie文件的风险,导致数据泄露的问题。
4、Session使用在哪些场合?
由于Session数据是存储在服务器端的,安全性比Cookie要高。那么数据安全性要求比较高,比较私密的情况下都可以使用Session。
那么一般我们会用Session存储用户的状态,方便在页面之间切换时依旧显示登录状态。还可以作为缓存,缓存用户购物车数据。为什么购物车的数据不适用Cookie呢?原因很简单,如果用Cookie实现购物车的存储功能,当用户在A电脑放了3件商品到购物车中,用户在A电脑看购物车时3件商品都是可以看到的。但是当用户在B电脑登录账号查看购物车时,会发现购物车中一件商品都没有。如果使用Session就不存在这种问题。那么为什么会出现这种情况呢?原因就在于存储数据的方式不同!首先Cookie是存储数据在客户端,Session是存储数据在服务端。那么当用户在A电脑存储数据到购物车时,如果存到Cookie中,就相当于把数据存储到了A电脑中,在B电脑自然读取不到该Cookie的数据。反而Session存储商品在服务器时,无论你换哪台电脑,都是可以直接从服务器获取该用户的信息展示的。
所以综合下来,总结就是Cookie存储数据在本地,安全性要求不高、不要求数据共享都可以使用它;Session存储数据在服务器,数据安全性要求高、需要共享数据,则可以选择Session。
5、Cookie和Seesion有什么区别?
简单介绍完Cookie和Session之后,我相信你一定有很多疑问,Cookie和Session到底有什么区别?我们简单从多个角度来进行对比。对比结果如下:
那么对比下来,最关键的是,如果存储的数据安全性要求比较高,比较私密,那么数据就存储在Session中,如果安全性要求不那么高就存储在Cookie中。原因是Cookie存储在本地,黑客可以在通讯过程中窃取Cookie解密查看存储信息。如果信息存储在Session中,Session的数据是缓存在服务器端的,黑客是没有权限操作服务器,对Session文件进行破解的,只能获取到SessionID。而SessionID是服务端程序获取Session数据的唯一标识。
6、我写的书开始预售了!
最近正在写一本《ASP.NET Web动态网站》开发的书,预计2月底写完,敬请期待~
预售网址:http://www.71muke.com/course/info/99
更多编程知识获取,可以关注公众号:琉忆编程库。
Session是什么?它与Cookie有什么区别?的更多相关文章
- [06] Session实现机制以及和Cookie的区别
1.为什么有Session和Cookie 根据早期的HTTP协议,每次request-reponse时,都要重新建立TCP连接.TCP连接每次都重新建立,所以服务器无法知道上次请求和本次请求是否来自于 ...
- session不一定非得要cookie开启才能使用。也可以使用get传递参数
session不一定非得要cookie开启才能使用.也可以使用get传递参数 可以将session_id();设置为一个常量. define(’s_id‘ ,$_COOKIE['session_nam ...
- 什么是cookie?什么是session?session和cookie有什么区别?
在技术面试中,经常被问到“说说Cookie和Session的区别”,大家都知道,Session是存储在服务器端的,Cookie是存储在客户端的,然而如果让你更详细地说明,你能说出几点?今天个推君就和大 ...
- 在pycharm中批量插入表数据、分页原理、cookie和session介绍、django操作cookie
昨日内容回顾 ajax发送json格式数据 ''' 1. urlencoded 2. form-data 3. json ''' 1. ajax $.ajax({ data: JSON.stringi ...
- sessionStorage 、localStorage 和 cookie 之间的区别
sessionStorage 和 localStorage 是HTML5 Web Storage API 提供的,可以方便的在web请求之间保存数据.有了本地数据,就可以避免数据在浏览器和服务器间不必 ...
- sessionStorage 、localStorage 和 cookie 之间的区别(转)
essionStorage .localStorage 和 cookie 之间的区别(转) 2012-05-08 14:29:19| 分类: HTML5CSS3WEBAPP|举报|字号 订阅 ...
- sessionStorage localStorage 和 cookie 之间的区别转
sessionStorage 和 localStorage 是HTML5 Web Storage API 提供的,可以方便的在web请求之间保存数据.有了本地数据,就可以避免数据在浏览器和服务器间不必 ...
- Go原生和GoFrame的Cookie关于MaxAge区别
Go原生和GoFrame的Cookie关于MaxAge区别 环境: gf v1.14.4 go 1.11 Go原生 type Cookie struct { Name string Value str ...
- tf.session.run()单函数运行和多函数运行区别
tf.session.run()单函数运行和多函数运行区别 觉得有用的话,欢迎一起讨论相互学习~Follow Me problem instruction sess.run([a,b]) # (1)同 ...
- Kafka session.timeout.ms heartbeat.interval.ms参数的区别以及对数据存储的一些思考
Kafka session.timeout.ms heartbeat.interval.ms参数的区别以及对数据存储的一些思考 在计算机世界中经常需要与数据打交道,这也是我们戏称CURD工程师的原因之 ...
随机推荐
- react中antd+css Module一起使用
antd 和 css modules 不能混用,针对antd的css 单独写一条loader的规则,不开启 css modules. 使用 exclude 和 include 配置参考(https:/ ...
- etcd的raft选取机制
etcd 是一个分布式的k/V存储系统.核心使用了RAFT分布式一致性协议.一致性这个概念,它是指多个服务器在状态达成一致,但是在一个分布式系统中,因为各种意外可能,有的服务器可能会崩溃或变得不可靠, ...
- layui 时间插件,change&&done,按照官网写法无效,解决方式!
摘抄自 hahei2020:https://blog.csdn.net/hahei2020/article/details/79285370 layui 时间插件, 当选择时间或时间发生改变后,按照官 ...
- 揭秘 BPF map 前生今世
揭秘 BPF map 前生今世 本文地址:https://www.ebpf.top/post/map_internal 1. 前言 众所周知,map 可用于内核 BPF 程序和用户应用程序之间实现双向 ...
- F2BPM的流程仿真
仿真概述 F2BPM工作流仿真是一种通过建立工作流虚拟运行环境执行工作流仿真的方法.集中式仿真引擎解释工作流仿真模型,仿真活动的执行,处理仿真过程中的不确定性,从而完成工作流模型的仿真.同时,会实时显 ...
- Ajax_axios发送ajax请求
Ajax_axios发送ajax请求 这篇笔记主要讲一下axios基本的发送ajax请求的方法 axios在当前的前端行业里面是用的比较热门的一个 下面给大家分享一下它axios的一个基本用法 这段代 ...
- Node内部架构图
1.Node内部架构图 先来看一下Node节点的内部实现架构图. 首先最上层入口是Restful风格和javaTcp风格的API入口,RestFul请求映射到处理器RestControl.JavaAp ...
- QT控件之QSlider
singleStep:比如按下键盘的左右建,每次移动的距离 pageStep:比如用鼠标对准滑动条的前面按下,每次移动的距离 value:初始默认值 接下来看该控件拥有的信号: 重点看后面的四个,看字 ...
- golang中的排序算法实现
1. 冒泡排序算法实现 package main import "fmt" func main() { values := []int{3, 98, 55, 46, 22, 3, ...
- python 线程池使用
传统多线程方案会使用"即时创建, 即时销毁"的策略.尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务是执行时间较短,而且执行次数极其频繁,那么服务器将处于 ...