浅析session&cookie
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的更多相关文章
- 浅析Session和Cookie
Cookie Cookie的作用,就是当一个用户通过http访问一个服务器时,这个服务器会将一些key/value键值对返回给客户端浏览器,并给这些数据加上一些限制条件,在条件符合时这个用户访问该 ...
- session & cookie(li)
Session & Cookie 一.定义 Session,用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间.Cookie,由服务器端生成,发送 ...
- web也是区分前端与后端的,session\cookie辨析
<1>Ajax交互方式 Ext.Ajax.request( { //被用来向服务器发起请求默认的url url : "", //请求时发送后台的参数,既可以是Json对 ...
- http之Session&Cookie
百度了一波session与Cookie,我发现这东西远比我想象中更复杂(可能是因为我不明白底层的运行原理).网上也是一堆的关于Session与Cookie区别/联系的文章,然而,我看完了还是一脸懵逼的 ...
- Asp.net MVC使用Model Binding解除Session, Cookie等依赖
上篇文章"Asp.net MVC使用Filter解除Session, Cookie等依赖"介绍了如何使用Filter来解除对于Session, Cookie的依赖.其实这个也可以通 ...
- Asp.net MVC使用Filter解除Session, Cookie等依赖
本文,介绍了Filter在MVC请求的生命周期中的作用和角色,以及Filter的一些常用应用场景. 同时针对MVC中的对于Session,Cookie等的依赖,如何使用Filter解依赖. 如果大家有 ...
- [转]Asp.net MVC使用Filter解除Session, Cookie等依赖
本文转自:http://www.cnblogs.com/JustRun1983/p/3279139.html 本文,介绍了Filter在MVC请求的生命周期中的作用和角色,以及Filter的一些常用应 ...
- [转载]JavaEE学习篇之——Session&&Cookie
原文链接: http://blog.csdn.net/jiangwei0910410003/article/details/23337043 今天继续来看看JavaWeb的相关知识,这篇文章主要来讲一 ...
- Redis+Django(Session,Cookie)的用户系统
一.Django authentication django authentication提供了一个便利的user api接口,无论在py中 request.user,参见Request and re ...
随机推荐
- 即使用ADO.NET,也要轻量级实体映射,比Dapper和Ormlite均快
不管出于什么原因,有时候框架人员摒弃了NH或EF,而使用原生数据库访问对象. 为了优美的编程,用上我写的轻量级映射扩展方法吧 目的:将SqlDataReader自动转换成T类型 代码如下: /// & ...
- Local gulp not found in.. on windows
当出现报错时,请按如下方式安装 gulp 以下使用国内的淘宝镜像安装: $ # Step 1 $ cnpm install -g gulp $ # Step 2 $ cnpm install --sa ...
- RGW 负载均衡和高可用的几个方案对比
注:在RGW网关主机网卡已经是10Gb的情况下,如下三个方案没有引入LVS:如果RGW是Gb网卡,可以考虑引入LVS做流量负载均衡. RGW部署采用 fastcgi+nginx 扩展性和可配置性更强. ...
- Asp.Net MVC<六>:Controller、Action 待续
控制器 抽象类Controller Visual Studio的向导创建的Controller类型继承自抽象类Controller. 它是ControllerBase的子类. 实现了IControll ...
- 8.Android 系统状态栏沉浸式/透明化解决方案
转载:http://www.jianshu.com/p/34a8b40b9308 前言 网上已经有很多有关于系统状态栏的解决方案,这篇文章也不会有什么新奇的解决方案,都是本人经过自己试验,统计提炼出来 ...
- 【poj1742】 Coins
http://poj.org/problem?id=1742 (题目链接) 题意 给出n钟纸币,每种纸币面值为a[i],数量为c[i],问能够成多少数值小于等于m的数. Solution 先想到了容斥 ...
- 由于一个粗心造成的RuntimeException
今天在测试时候,老是有一个TextView报错,以下是错误日志: java.lang.RuntimeException: Unable to resume activity {com....Activ ...
- 静态关键字static(2)
static关键字主要有两种作用: 第一,为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 具体而言,在Java语言中,static ...
- WEKA使用
参考 http://bbs.middleware123.com/thread-24052-1-1.html 使用Weka进行数据挖掘 http://quweiprotoss.blog.163.com ...
- Java Reference简要概述
@(Java)[Reference] Java Reference简要概述 Reference对象封装了其它对象的引用,可以和普通的对象一样操作. Java提供了四种不同类型的引用,引用级别从高到低分 ...