深入理解session和Cookie
2015-04-22 10:17
369 查看
Session和Cookie的作用都是为了保持访问用户与后端服务器的交互状态。
10.1 深入理解Cookie
Cookie是一个用户通过HTTP访问一个服务器这个服务器会将一些key/value键值对返回给客户端浏览器,并加上一些限制条件,当条件符合时用户下次访问服务器时,数据又被完整待会服务器。
为了解决http是无状态的协议的问题,让服务器识别两次访问是同一个用户。
如果设置了version1中的配置项,即使没有配置版本号,tomcat在最后构建http响应头的时候也会自动将版本号设置为1。
对cookie的构建是通过org.apache.catalina.connector.Response类完成的。
注意:
创建Cookie的Name不能和set-Cookie中属性名称相同,否则抛出IllegalArgumentException
Name和Value不能设置成非ASIC字符,如果要使用中文,需要通过URLEncoder将其编码
Name和Value出现TOKEN字符(“\”“、“”,“等)version自动设置为1
当该Cookie属性想中出现Version为1的属性项时,构建HTTP响应头同样会将Version设置为1
10.2 深入理解Session
Session是为了防止Cookie太多占用网络流量的问题解决的。
客户端在访问服务器的时候生成唯一的一个sessionId通常是Name=JSESSIONID的Cookie,之后登陆只用返回这一个Cookie即可。
session如何工作
当servlet重启或者关闭时,StandardManager负责持久化没有过期的StandardSession,将其持久化到一个SESSIONS.ser的文件中,当servlet容器重启的时候将其恢复。
检查session过期的两种形式:
(1)Tomcat后台线程中超过60s即判定为过期
(2)调用request.getSession()方法时,也会检查,但如果过期会创建新的StandardSession对象。
Cookie和Session对比:
(1)cookie数据存放在客户的浏览器上,session数据放在服务器上。
(2)cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
(3)session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
(4)单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
10.3 分布式session框架
Cookie存在安全性和带宽的缺点,但能解决多机访问的问题。为了克服这样的缺点采用分布式session框架解决了session无法多机访问的缺点。
思路:采用服务订阅服务器,从订阅服务器订阅可写的session和可写的cookie。能够精准的控制哪些应用可以操作哪些Session和Cookie,能有效控制session的安全性和Cookie的数量。
订阅服务器可以有效的管理资源,省去了每个应用都配置Cookie。如果需要统一到订阅服务器申请。
分布式框架如何存取session和Cookie
思路:利用tomcat中的filter在request到达MVC之前,根据sessionId获取用户信息设置到request和response中,然后更新到分布式缓存中。
跨域名同步session
思路:在a域名登陆过之后,访问b域名的时候,如果sessionId为空则302跳转到a域名获得sessionId并写入到b域名下面,之后再跳转回b域名。
表单重复提交问题
思路:每次请求的时候服务端生成一个随机数返回给客户端,每次提交的时候做一个比较,如果一致,则为成功的一次提交,并删除token,如果不等代表重复提交。
也可以在提交按钮上做一个定时器。
PC/移动多终端session统一
(1)多端共享session
要求:
两端的服务器会员数据结构、session、cookie统一
(2)多终端登陆(扫码登陆)
手机端已经登陆,二维码中标志这该客户端已经通过手机登陆,扫码之后客户端给服务端置位,前端网页不断请求服务器标志位,然后跳转。
10.1 深入理解Cookie
Cookie是一个用户通过HTTP访问一个服务器这个服务器会将一些key/value键值对返回给客户端浏览器,并加上一些限制条件,当条件符合时用户下次访问服务器时,数据又被完整待会服务器。
为了解决http是无状态的协议的问题,让服务器识别两次访问是同一个用户。
如果设置了version1中的配置项,即使没有配置版本号,tomcat在最后构建http响应头的时候也会自动将版本号设置为1。
对cookie的构建是通过org.apache.catalina.connector.Response类完成的。
注意:
创建Cookie的Name不能和set-Cookie中属性名称相同,否则抛出IllegalArgumentException
Name和Value不能设置成非ASIC字符,如果要使用中文,需要通过URLEncoder将其编码
Name和Value出现TOKEN字符(“\”“、“”,“等)version自动设置为1
当该Cookie属性想中出现Version为1的属性项时,构建HTTP响应头同样会将Version设置为1
10.2 深入理解Session
Session是为了防止Cookie太多占用网络流量的问题解决的。
客户端在访问服务器的时候生成唯一的一个sessionId通常是Name=JSESSIONID的Cookie,之后登陆只用返回这一个Cookie即可。
session如何工作
当servlet重启或者关闭时,StandardManager负责持久化没有过期的StandardSession,将其持久化到一个SESSIONS.ser的文件中,当servlet容器重启的时候将其恢复。
检查session过期的两种形式:
(1)Tomcat后台线程中超过60s即判定为过期
(2)调用request.getSession()方法时,也会检查,但如果过期会创建新的StandardSession对象。
Cookie和Session对比:
(1)cookie数据存放在客户的浏览器上,session数据放在服务器上。
(2)cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
(3)session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
(4)单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
10.3 分布式session框架
Cookie存在安全性和带宽的缺点,但能解决多机访问的问题。为了克服这样的缺点采用分布式session框架解决了session无法多机访问的缺点。
思路:采用服务订阅服务器,从订阅服务器订阅可写的session和可写的cookie。能够精准的控制哪些应用可以操作哪些Session和Cookie,能有效控制session的安全性和Cookie的数量。
订阅服务器可以有效的管理资源,省去了每个应用都配置Cookie。如果需要统一到订阅服务器申请。
分布式框架如何存取session和Cookie
思路:利用tomcat中的filter在request到达MVC之前,根据sessionId获取用户信息设置到request和response中,然后更新到分布式缓存中。
跨域名同步session
思路:在a域名登陆过之后,访问b域名的时候,如果sessionId为空则302跳转到a域名获得sessionId并写入到b域名下面,之后再跳转回b域名。
表单重复提交问题
思路:每次请求的时候服务端生成一个随机数返回给客户端,每次提交的时候做一个比较,如果一致,则为成功的一次提交,并删除token,如果不等代表重复提交。
也可以在提交按钮上做一个定时器。
PC/移动多终端session统一
(1)多端共享session
要求:
两端的服务器会员数据结构、session、cookie统一
(2)多终端登陆(扫码登陆)
手机端已经登陆,二维码中标志这该客户端已经通过手机登陆,扫码之后客户端给服务端置位,前端网页不断请求服务器标志位,然后跳转。
相关文章推荐
- 深入理解 Session 与 Cookie
- 深入理解Servlet/JSP之“Cookie和Session原理”
- 深入理解PHP中的Session和Cookie
- 深入理解Servlet/JSP之“Cookie和Session原理”
- 深入理解cookie与session
- 深入理解Session和Cookie机制
- 深入理解Servlet/JSP之“Cookie和Session原理”
- 深入分析理解session与cookie的作用
- 深入理解 Session 与 Cookie
- 深入理解 Session 和 Cookie
- 深入理解浏览器会话机制(session && cookie)
- 深入理解 Session 与 Cookie
- 深入理解Session和 Cookie
- 深入理解session,cookie
- Cookie与Session深入理解(一)——Cookie
- 深入理解Cookie和Session原理
- 转!!深入理解 Session 与 Cookie
- 深入理解Servlet/JSP之“Cookie和Session原理”
- 深入理解 Session 与 Cookie
- 深入理解 Session 与 Cookie