你好,是我琉忆。

今天我们讲一讲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有什么区别?的更多相关文章

  1. [06] Session实现机制以及和Cookie的区别

    1.为什么有Session和Cookie 根据早期的HTTP协议,每次request-reponse时,都要重新建立TCP连接.TCP连接每次都重新建立,所以服务器无法知道上次请求和本次请求是否来自于 ...

  2. session不一定非得要cookie开启才能使用。也可以使用get传递参数

    session不一定非得要cookie开启才能使用.也可以使用get传递参数 可以将session_id();设置为一个常量. define(’s_id‘ ,$_COOKIE['session_nam ...

  3. 什么是cookie?什么是session?session和cookie有什么区别?

    在技术面试中,经常被问到“说说Cookie和Session的区别”,大家都知道,Session是存储在服务器端的,Cookie是存储在客户端的,然而如果让你更详细地说明,你能说出几点?今天个推君就和大 ...

  4. 在pycharm中批量插入表数据、分页原理、cookie和session介绍、django操作cookie

    昨日内容回顾 ajax发送json格式数据 ''' 1. urlencoded 2. form-data 3. json ''' 1. ajax $.ajax({ data: JSON.stringi ...

  5. sessionStorage 、localStorage 和 cookie 之间的区别

    sessionStorage 和 localStorage 是HTML5 Web Storage API 提供的,可以方便的在web请求之间保存数据.有了本地数据,就可以避免数据在浏览器和服务器间不必 ...

  6. sessionStorage 、localStorage 和 cookie 之间的区别(转)

    essionStorage .localStorage 和 cookie 之间的区别(转) 2012-05-08 14:29:19|  分类: HTML5CSS3WEBAPP|举报|字号 订阅     ...

  7. sessionStorage localStorage 和 cookie 之间的区别转

    sessionStorage 和 localStorage 是HTML5 Web Storage API 提供的,可以方便的在web请求之间保存数据.有了本地数据,就可以避免数据在浏览器和服务器间不必 ...

  8. Go原生和GoFrame的Cookie关于MaxAge区别

    Go原生和GoFrame的Cookie关于MaxAge区别 环境: gf v1.14.4 go 1.11 Go原生 type Cookie struct { Name string Value str ...

  9. tf.session.run()单函数运行和多函数运行区别

    tf.session.run()单函数运行和多函数运行区别 觉得有用的话,欢迎一起讨论相互学习~Follow Me problem instruction sess.run([a,b]) # (1)同 ...

  10. Kafka session.timeout.ms heartbeat.interval.ms参数的区别以及对数据存储的一些思考

    Kafka session.timeout.ms heartbeat.interval.ms参数的区别以及对数据存储的一些思考 在计算机世界中经常需要与数据打交道,这也是我们戏称CURD工程师的原因之 ...

随机推荐

  1. php.ini配置文件中设置时区

    date.timezone设置php5默认date.timezone为utc,改为date.timezone = PRC即可解决时间相差八小时的问题

  2. 《剑指offer》面试题60. n个骰子的点数

    问题描述 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s.输入n,打印出s的所有可能的值出现的概率. 你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i ...

  3. 【记录一个问题】铁威马NAS存储中的人人影视APP,其WEB服务占满一个CPU核

    终端登录后,top命令发现rrshareweb这个进程把单个CPU核占满了. 发现其实是人人影视的web服务,而这个服务里面我还根本未使用. 卸载这个app后正常.

  4. 【转载】ASP.NET前台代码绑定

    ASP.NET前台代码绑定后台变量方法总结http://www.cnblogs.com/lerit/archive/2010/10/22/1858007.html ASP.NET前台无法访问后台int ...

  5. linux下git安装使用新手教程。

    1.进入官网,创建Github帐户,获取git服务. 2.本地安装git客户端,yum install git. 3.生成ssh key,使用命令 "ssh-keygen -t rsa -C ...

  6. golang中的runtime包

    1. runtime.Gosched  让出CPU时间片,重新等待安排任务 package main import ( "fmt" "runtime" ) fu ...

  7. 集合框架-工具类-Collections-折半最值

    1 package cn.itcast.p2.toolclass.collections.demo; 2 3 import java.util.ArrayList; 4 import java.uti ...

  8. Android开发----WebView&Activity生命周期

    WebView webview是一个再应用中设置好位置和大小的浏览器,而且不会放置任何花哨的UI. 在大多数情况下,除非你调用了原生API,否则不必在webview中专门测试web应用. 首先为Web ...

  9. Java应用程序OOM分析

    内存泄露:申请使用完的内存没有释放,导致虚拟机不能再次使用该内存,此时这段内存就泄露了,因为申请者不用了,而又不能被虚拟机分配给别人用. 内存溢出:申请的内存超出了JVM能提供的内存大小,此时称之为溢 ...

  10. python网络爬虫-python基础(三)

    python安装 Anaconda的python科学计算环境,只需要想普通软件一样安装就可以把python的环境变量.解释器.开发环境都安装到计算机中 除此之外anaconda还提供众多的科学计算的包 ...