session&cookie没有出现的黑暗时代

  大家都知道,HTTP协议是一种无状态的协议,本次请求下一次请求没有任何的关联,所有没有办法直接用http协议来记住用户的信息,试想一向,每一次点击一个链接都需要需要输入用户名和密码的感觉是一种怎样的酸爽体验,为了体现用户的友好性,于是聪明(lan duo)的程序员们就想到了session这种解决方案,用来记住用户的信息凭证。

session是什么

  其实session没有多神奇的地方,只是保存在服务器的一小段数据而已,然后生成一个唯一标识,记作sessionid,然后把这个sessionid发送给用户,这样每次用户请求的时候只要带着这个sessionid,服务器就能知道这个用户是谁了

cookie是什么

  cookie和session类似,只不过cookie保存在客户端,是以字符串的形式保存的,每次发送http请求的时候,都会把cookie放在请求的首部中,服务器可以通过解析首部从而得到cookie数据,从而得到用户信息,但是由于每次传输cookie需要消耗一定的带宽,所以为了节省资源,程序员们没有把所有的信息都保存在cookie中,而是生成了一个用来记录用户所有信息的id存放在cookie中

session&cookie的生命周期

  如果没有设置生命周期,那么session和cookie的数据是保存在内存中的,随着浏览器的关闭,所有的数据都会丢失,但是如果设置了生命周期,那么在生命周期的时间内,不主动的释放session的话,session会非常顽固的一直存在服务器中,采用这一特性有时候可以进行关键字的记录

用通俗的概念理解session&cookie

  假设服务器是一个大型的商场,用户每次请求就相当于一次购物,那么用户每次购物都需要把私人物品存放在存包处的柜子(session),然后用户会得到一个钥匙(sessionid),通常情况下,用户会把钥匙放在口袋中(cookie),每次购物结束,只需要拿着钥匙直接开启柜子(session)直接拿走自己的个人物品,那么就结束购物了。

  但是实际情况总会有些偏差,假设今天客户是个妹子,穿的是裙子来没有口袋怎么办(客户端禁用了cookie),那么柜台人员只能告诉她你最好把钥匙放在手上(把sessionid放在表单的隐藏域中)或者直接带在脖子上(把sessionid放在url中)

  钥匙放在手上或者口袋里,总有可能被有心人利用,偷到了钥匙,把客户的私人物品给顺手牵羊了(CSRF跨站请求伪造),这样肯定会给用户造成一定的损失,虽然可以通过让管理处的管理人员记住客户的长相(IP地址),但是还是没办法完全保证数据的安全性

  有些时候商场也会造贼,柜子的锁被翘了(session丢失),给客户造成了相当严重的损失,所以为了避免这种情况,存包处的柜子一定要放在安全的地方并且有专人看守(seesion持久化).

  商场经过这一系列的优化操作之后,开了分店了(负载均衡),这个时候如果客户来买东西,只把私人物品存到其中一个商场的话,逛完分店的时候还得回到原来的地方拿东西,肯定会给客户造成相当严重的困扰,于是聪明的商场管理人员就想到了一个折衷的解决方案,在两个商场之间设立了一个专门存放私人物品的地方(服务器集群,session共享),存完东西之后你可以任意的选择一个商场进行购物,买完东西只需要去专门管理私人物品的地方拿回自己的东西就好了

浅析session&cookie的更多相关文章

  1. 浅析Session和Cookie

    Cookie   Cookie的作用,就是当一个用户通过http访问一个服务器时,这个服务器会将一些key/value键值对返回给客户端浏览器,并给这些数据加上一些限制条件,在条件符合时这个用户访问该 ...

  2. session & cookie(li)

    Session & Cookie 一.定义 Session,用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间.Cookie,由服务器端生成,发送 ...

  3. web也是区分前端与后端的,session\cookie辨析

    <1>Ajax交互方式 Ext.Ajax.request( { //被用来向服务器发起请求默认的url url : "", //请求时发送后台的参数,既可以是Json对 ...

  4. http之Session&Cookie

    百度了一波session与Cookie,我发现这东西远比我想象中更复杂(可能是因为我不明白底层的运行原理).网上也是一堆的关于Session与Cookie区别/联系的文章,然而,我看完了还是一脸懵逼的 ...

  5. Asp.net MVC使用Model Binding解除Session, Cookie等依赖

    上篇文章"Asp.net MVC使用Filter解除Session, Cookie等依赖"介绍了如何使用Filter来解除对于Session, Cookie的依赖.其实这个也可以通 ...

  6. Asp.net MVC使用Filter解除Session, Cookie等依赖

    本文,介绍了Filter在MVC请求的生命周期中的作用和角色,以及Filter的一些常用应用场景. 同时针对MVC中的对于Session,Cookie等的依赖,如何使用Filter解依赖. 如果大家有 ...

  7. [转]Asp.net MVC使用Filter解除Session, Cookie等依赖

    本文转自:http://www.cnblogs.com/JustRun1983/p/3279139.html 本文,介绍了Filter在MVC请求的生命周期中的作用和角色,以及Filter的一些常用应 ...

  8. [转载]JavaEE学习篇之——Session&&Cookie

    原文链接: http://blog.csdn.net/jiangwei0910410003/article/details/23337043 今天继续来看看JavaWeb的相关知识,这篇文章主要来讲一 ...

  9. Redis+Django(Session,Cookie)的用户系统

    一.Django authentication django authentication提供了一个便利的user api接口,无论在py中 request.user,参见Request and re ...

随机推荐

  1. .net项目在linux平台的CI流程(基于Jenkins+mono+jexus)

    内容较多,主要分为以下4方面内容: Jenkins的安装部署(centos 7+) .net在linux平台CI流程所需的插件管理&配置 Jenkins配置连接Gitlab(也可使用对应插件连 ...

  2. css 拾遗

    1, 实现尖角 <style> .up{ border-top: 30px solid red; border-right:30px solid gold; border-bottom:3 ...

  3. 微信小程序之明源商城系列-01-商城介绍及开发准备

    1,效果展示 数据来自于写的一个小爬虫爬了明源商城部分的数据.由于价格的保密性,下列产品价格和真实的都不同. 1.1 主页及开发文件结构 1.2  产品的详细页面 1.2  产品分类页面 1.3 产品 ...

  4. Servlet实现asp.net中的Global.asax启动事件(Servlet和Listener使用)

    1.Java Web中没有像asp.net的全局启动事件,但是可以通过web.xml中的load-on-startup节点来控制Servlet的开机启动和启动次数.web.xml详细配置参考:http ...

  5. Sublime Text 中文乱码

    STEP1: 安装package control tool 先设置好fq,系统代理设置为fq代理 按Crtl + ~调出控制台,输入如下代码: import urllib2,os; pf='Packa ...

  6. 【团队项目选题】自选项目:桌游APP

    由于我们团队的黄金点游戏结果是第二名,按理说是一定能选到一个自选项目的,所以以下只列出我们选择的自选项目 自选项目名称 桌游APP   暂定 (名字还没想好) 项目大致介绍 此APP集成了多种桌游,主 ...

  7. JavaScript 中对内存的一些了解

    在使用JavaScript进行开发的过程中,了解JavaScript内存机制有助于开发人员能够清晰的认识到自己写的代码在执行的过程中发生过什么,也能够提高项目的代码质量.其实关于内存的文章也有很多,写 ...

  8. <<< Oracle表空间创建、修改、删除基本操作

    ORACLE 中,表空间是数据管理的基本方法,所有用户的对象要存放在表空间中,也就是用户有空间的使用权,才能创建用户对象 create tablespace myts  //建立表空间,名为mytsd ...

  9. JQuery中$.ajax()方法参数详解(转载)

    url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 ...

  10. matlab 有趣小细节

    图像的默认显示方式,坐标从1开始计数.是从左向右,从上到下为正,分别为x和y轴          如果加入x轴和y轴画成成的格子,起始位置并不是严格的左上角,而是像素的中心点,并不是以像素的边缘画格子 ...