以前对于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来跟踪会话。

最新文章

  1. Android 开源项目及其学习
  2. 直接拿来用!最火的Android开源项目(完结篇)
  3. java多线程-Condition
  4. dubbo,gradle,spring build from source
  5. De novo 测序基础知识
  6. java中的匿名内部类
  7. URAL 2070 Interesting Numbers (找规律)
  8. 安装VMware Sphere ESXi 5.5
  9. c++基础五个题(二)
  10. android 开发代码被黑客破译有那么容易吗?
  11. poj 1872 A Dicey Problem WA的代码,望各位指教!!!
  12. 通信技术:SSE设计方案(一)--- 前端Server-Sent Events概念讲解和基础类库完善发布
  13. The Euler function(线性筛欧拉函数)
  14. Python-String字符串的相关方法
  15. python的异步IO模块
  16. react native 开发报错
  17. BZOJ4386[POI2015]Wycieczki——矩阵乘法+倍增
  18. 根据 train_test.prototxt文件生成 deploy.prototxt文件
  19. HttpContext.Current.Session 和 Session 的区别
  20. winform程序开机启动时的运行目录

热门文章

  1. 【转】diamond专题(二)– 核心原理介绍
  2. 选题 Scrum立会报告+燃尽图 07
  3. CEF3编译
  4. php面向对象 2
  5. Android之View的绘制流程
  6. win下gvim或者linux下的vim安装vundle都适用的配置文件 - 在当前目录及其子目录下**, 的所有文件* 中, 搜索当前光标所在的单词
  7. 让Socket穿透Windows防火墙
  8. 内网IPC$入侵
  9. Oracle中生成随机数的函数
  10. OpenCL32 for mingw