深入了解session/cookie机制
来源:互联网 发布:淘宝自行车用品店推荐 编辑:程序博客网 时间:2024/06/13 13:45
一、相关概念
cookie:实现客户端只有状态。
session:实现服务端持有状态。
jsessionid:一个唯一标识号,用来标识服务器端的Session,也用来标识客户端的Cookie,客户端和服务器端通过这个JSESSIONID来一一对应。
二、session是什么时候创建的?
Session并不是在客户端第一次访问就会在服务器端生成,而是在服务器端(一般是servlet里)使用request调用getSession方法才生成的。但是默认情况下,jsp页面会调用request.getSession(),即jsp页面的这个属性<%@ page session=”true” %>默认是true的,编译成servlet后会调用request.getSession()。所以只要访问jsp页面,一般是会在服务器端创建session的。
三、session是由谁创建?
应用服务器,如tomcat。
四、客户端到服务端,通过cookie、session、jsessionid三者实现有状态服务的具体流程是什么?
1、客户端第一次请求到服务器连接,这个连接是没有附带任何东西的,没有Cookie,没有JSESSIONID。
2、服务器端接收到请求后,会检查这次请求有没有传过来JSESSIONID或者Cookie,如果没有JSESSIONID和Cookie,则服务器端会创建一个Session,并生成一个与该Session相关联的JSESSIONID返回给客户端,客户端会保存这个JSESSIONID,并生成一个与该JSESSIONID关联的Cookie;
3、第二次请求的时候,会把该Cookie(包含JSESSIONID)一起发送给服务器端,这次服务器发现这个请求有了Cookie,便从中取出JSESSIONID,然后根据这个JSESSIONID找到对应的Session,这样便把Http的无状态连接变成了有状态的连接。
4、但是有时候浏览器(即客户端)会禁用Cookie,我们知道Cookie是通过Http的请求头部的一个cookie字段传过去的,如果禁用,那么便得不到这个值,JSESSIONID便不能通过Cookie传入服务器端,当然我们还有其他的解决办法,url重写和隐藏表单,url重写就是把JSESSIONID附带在url后面传过去。隐藏表单是在表单提交的时候传入一个隐藏字段JSESSIONID。这两种方式都能把JSESSIONID传过去。
5、上述步骤由应用服务器tomcat和浏览器共同完成,其中cookie解析、session创建、jsessionid生成、URL重写等都是由tomcat完成,二次请求时cookie封装jsessionid则由浏览器完成。
五、参考文章
1、Tomcat源码分析(九)–Session管理
2、Cookie/Session机制详解
- 深入了解session/cookie机制
- 深入了解session 传递机制
- 深入理解Session和Cookie机制
- 深入了解cookie与session的区别与应用
- 了解cookie和session
- 了解Cookie和Session
- 深入理解浏览器会话机制(session && cookie)
- Memcached 机制的深入了解 及 把SESSION 放入Memcached
- 深入了解cookie
- 深入理解Session Cookie
- 深入理解cookie & session
- Cookie和session深入
- 128.深入 cookie ,session
- 深入理解session,cookie
- session和cookie机制
- session和cookie机制
- session和cookie机制
- cookie实现session机制
- 怎样玩儿转App&手游自动化测试?
- flex4.6中com.esri.viewer组件库
- activity启动时获取view的高度和宽度
- git对象
- Unity Mecanim在大型mmo中的应用
- 深入了解session/cookie机制
- [FAQ13618]L版本之后如何开启AAL功能
- [Gradle中文教程系列]-跟我学Gradle-7.3:打包-为Web工程打不同环境包
- #warning的用处
- jquery如何实现倒计时效果
- 时间触发和状态机思想的嵌入式系统
- ORACLE 12c 内存特性研究
- xgboost入门以及windows下安装及使用一
- android中view随手指移动