Session和Cookie的分析与区别

【Session和Cookie的分析与区别】一句话就是,一般情况下是需要支持的!
大家都知道是在服务器端保存客户状态的,只要浏览器不关闭,就可以一直保存该用户的信息,通常用做来保存是否登陆信息等.而与其刚好相反,它将信息保存到客户端,它是写入文件的,俗成小甜点..
今天做了个程序,是判断是否登陆成功的,没有使用,而全部使用的机制实现的.本来很好用,可吃完午饭后,突发起想的把浏览器的禁止了,这时候产生了一件让我很惊讶的事情竟然不好用了,也就是说,无论我怎么登陆系统,系统都认为我没有登陆!
当我把打开后就好用了,系统也恢复正常了?!这是怎么会事?感觉我和思维中的某种原则性的东西冲突了
于是决定好好研究下.
为什么登陆后,只要不关闭浏览器,就能一直存在?当然的数据是保存在服务器上的,但服务器是怎么识别这些数据都是谁的呢?答案是,每一个浏览者都唯一的,这就很好的区分了不同浏览者的不同了.是怎么产生的?应该是第一次访问服务器的时候随即生成的.假如是111,然后他的登陆信息是true,服务器就知道为111已经登陆了,这些信息都存在了服务器上了.但当浏览者继续操作的时候,也就是打开该系统的另一个页面的时候怎么办?如何传递?打开另一个页面的时候其实相当于重新访问系统,如果没有特殊的处理机制,系统会再次重新分配一个的,这样的话就失去意义了~!所以在第一次访问后应该存在了客户端.能寸哪呢?当然,只能寸在中了,这就是为什么关闭,就失去作用了

Session和Cookie的分析与区别

文章插图
找到这么个例子来描述 的关系再恰当不过了
一家咖啡店有喝5杯咖啡免费赠一杯咖啡的优惠,然而一次性消费5杯咖啡的机会微乎其微,这时就需要某种方式来纪录某位顾客的消费数量 。想象一下其实也无外乎下面的几种方案:
1、该店的店员很厉害,能记住每位顾客的消费数量,只要顾客一走进咖啡店,店员就知道该怎么对待了 。这种做法就是协议本身支持状态 。
2、发给顾客一张卡片,上面记录着消费的数量,一般还有个有效期限 。每次消费时,如果顾客出示这张卡片,则此次消费就会与以前或以后的消费相联系起来 。这种做法就是在客户端保持状态 。
3、发给顾客一张会员卡 , 除了卡号之外什么信息也不纪录,每次消费时,如果顾客出示该卡片,则店员在店里的纪录本上找到这个卡号对应的纪录添加一些消费信息 。这种做法就是在服务器端保持状态 。
第一种情况暂时不考虑.看第二种情况,卡片无疑就是了,所有的数据如果都存在卡片上是不安全的,也是容易遗失的(卡片被修改了?卡片遗失了?这都是有可能的).所以才用了第三种情况.客户除了个会员号再什么信息也没有,这是最安全的,但这个会员号必须是客户自己知道的!也就是中必须存储的.
Session和Cookie的分析与区别

文章插图
这样解释我今天中午遇到的情况就不惊讶了.
无的解决办法是利用URL重写技术,就是把的数据保存在url后面
在.net中,可以用Web.配置
就是把="false"改为:="true"就可以了
还有一种方法是利用表单隐藏字段技术,就是加个input type='hide'的元素.这中技术也在.Net中大量使用,尤其是.Net中的控件.个人很不喜欢这种技术,因为加大了流量(数据都是加密的.体积成倍增加)
默认情况下是存在.exe进程中的
.Net中是可以存在sql 中的,很强