关于session和cookie的区别
以前对于session和cookie的认识,就只是粗略的知道cookie保存在客户端,而session则保存在服务端。
如今查了些资料,对session和cookie也有了一个初步的认识,现在来总结一下:
session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一SessionID提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。也就是说session其实是依赖于cookie的。
在php中,我们可以通过修改相关配置,让session不依赖于cookie而存在
php.ini中,把session.use_trans_sid设成1,那么连接的后面就会自己加sessionid,就通过url来传递session的key了,这时客户端就算禁止了cookie也可以使用session
cookie是客户端的存储空间,由浏览器来维持。
而什么时候用到cookie呢?
这里就引入了一个会话的概念
理论上,一个用户的所有操作都应该属于同一个会话,另一个用户的所有请求操作则应该属于另一个会话。就以购物车来举例,无论A用户在什么时间把物品加入了购物车,这都应该是属于同一个会话,不能放入B用户或C用户的购物车,因为这不属于同一个会话。
然而,而Web应用程序是使用HTTP协议传输数据的。HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。即用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话了。要跟踪该会话,必须引入一种机制。
而Cookie就是这样的一种机制。它可以弥补HTTP协议无状态的不足。在Session出现之前,基本上所有的网站都采用Cookie来跟踪会话。
最新文章
- Android 开源项目及其学习
- 直接拿来用!最火的Android开源项目(完结篇)
- java多线程-Condition
- dubbo,gradle,spring build from source
- De novo 测序基础知识
- java中的匿名内部类
- URAL 2070 Interesting Numbers (找规律)
- 安装VMware Sphere ESXi 5.5
- c++基础五个题(二)
- android 开发代码被黑客破译有那么容易吗?
- poj 1872 A Dicey Problem WA的代码,望各位指教!!!
- 通信技术:SSE设计方案(一)--- 前端Server-Sent Events概念讲解和基础类库完善发布
- The Euler function(线性筛欧拉函数)
- Python-String字符串的相关方法
- python的异步IO模块
- react native 开发报错
- BZOJ4386[POI2015]Wycieczki——矩阵乘法+倍增
- 根据 train_test.prototxt文件生成 deploy.prototxt文件
- HttpContext.Current.Session 和 Session 的区别
- winform程序开机启动时的运行目录