深入理解Session
2016-03-08 20:54
344 查看
首先由一个在项目中遇到的问题来引入:
不管是在做PHP的项目也好,还是在做Javaweb的项目也好,相信大家都会经常用到session。做web项目可能觉得只要不关掉浏览器,我存的session是什么,取出来就是什么。但是给app写过接口就知道,其实session是用不了的。比如,web我们经常将短信验证码存到session,然后验证再从session取出来验证,于是,写app接口的时候,我们也这么做。但是在下一次请求验证短信验证码的时候,我们就会神奇的发现,取出来的session总是null。这到底是为什么呢,这是我之前做过的项目遇到的问题,比较深刻,今天有空就记录一下。
Session代表服务器与客户端的一次会话过程,这个过程是连续的,也可以时断时续的。浏览器第一次请求时,服务器会其创建一个session,并赋予其一个sessionID,这个sessionID是根据客户端的cookie而生成的。对于浏览器来说,对同一个服务器的不同请求,其http请求的cookie是相同的,因此生成的sessionID是相同的。但是APP的每次请求,都会生成不同的sessionID,因此不同请求存储的值都是对不同的sessionID,因此不同请求去根据上次存储的键值去获取session肯定是null。
不管是在做PHP的项目也好,还是在做Javaweb的项目也好,相信大家都会经常用到session。做web项目可能觉得只要不关掉浏览器,我存的session是什么,取出来就是什么。但是给app写过接口就知道,其实session是用不了的。比如,web我们经常将短信验证码存到session,然后验证再从session取出来验证,于是,写app接口的时候,我们也这么做。但是在下一次请求验证短信验证码的时候,我们就会神奇的发现,取出来的session总是null。这到底是为什么呢,这是我之前做过的项目遇到的问题,比较深刻,今天有空就记录一下。
Session代表服务器与客户端的一次会话过程,这个过程是连续的,也可以时断时续的。浏览器第一次请求时,服务器会其创建一个session,并赋予其一个sessionID,这个sessionID是根据客户端的cookie而生成的。对于浏览器来说,对同一个服务器的不同请求,其http请求的cookie是相同的,因此生成的sessionID是相同的。但是APP的每次请求,都会生成不同的sessionID,因此不同请求存储的值都是对不同的sessionID,因此不同请求去根据上次存储的键值去获取session肯定是null。
相关文章推荐
- 模仿一个投票,学习一下View的事件分发和拦截
- 整理:统计学习-2 感知机
- 软件测试(二) 第二次作业
- C语言:动态内存会被自动释放吗?杜绝“野指针”
- 数组求和
- Django模板
- PAT-Deduplication on a Linked List (25)
- jQuery获取复选框checkbox的值的正确方法
- POJ 2229 Sumsets
- 数据结构 第二章 线性表(1)顺序线性表的实现
- android I/O Performance 的一些查看方法
- 《GPU编程与CG语言之阳春白雪下里巴人》 读书笔记2
- 点击 UITextField 清除按钮,文本框中内容清除
- 第1周项目3—1~m的求解任务
- 曲面等值线
- iOS设计模式--原型模式
- 4.4.3 Android animation制作 跳动的心
- android editText 软键盘enter键图标的设置
- JavaScript
- Qt中ioctl