了解Session和Cookie

安全客
• 阅读 130

由于http协议无状态,需要用session记录客户状态,如购物车场景,服务端为用户创建特定session,用于标识并跟踪用户
  服务端保存session的方法很多,内存,数据库,文件都有
  集群时考虑session的转移,大型网站会有专门的session服务器集群来保存用户会话,这个时候session一般存放在内存
  服务端如何识别特定的客户?
  每次http请求,客户端会发送响应cookie到服务器,大多数应用用cookie来实现session跟踪的
  第一次创建session时,服务端会在http协议告诉客户端,需要在cookie类里记录一个session id,以后每次请求会发送这个id到数据库,我就知道你是谁了
  如果浏览器禁用了cookie,可以url重写来进行会话跟踪
  Cookie登陆场景,登陆过一次网站,第二次访问不需要输入账号密码自动登陆,就是把信息写道Cookie里,访问网站的是时候,网站页面的脚本读取Cookie,自动帮你把用户名填写了

Cookie
cookie机制

cookie内容

第一次访问可以看到响应头包含cookie,发送给客户端

第二次访问可以看到请求头也包含了cookie,是服务器端发送到客户端保存的

cookie是会话级别,也就是说浏览器开始到关闭,关闭浏览器时cookie则消失,但是有时候为什么没有消失呢,是因为给cookie设置了在客户端的持久化时间
设置cookie持久化时间
[AppleScript] 纯文本查看 复制代码
?
1
cookie.setMaxAge(10601000); 设置cookie在浏览器中存储时间为10分钟,到时间自动删除cookie信息

设置cookie携带路径
[AppleScript] 纯文本查看 复制代码
?
1
cookie.setPath("/");访问服务器下所有资源都携带这个cookiecookie.setPath("/项目名/当前页面");则访问当前页面才携带cookie

Session

session技术是基于cookie
cookie技术存储session编号

session机制
[AppleScript] 纯文本查看 复制代码
?
1
session是一种服务度机制,类似散列表结构来存储用户数据浏览器第一次向客户端发送请求时,服务器会自动生成一个session和sessionidsessionid唯一标识这个session服务器响应时把sessionid发送给浏览器浏览器第二次向服务器发送请求时就会携带这个sessionid服务器通过这个id找到对应的session获取用户数据

session缺点
cookie被禁止,session也会被禁止,可以通过url重写拜托
Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份Session数据放在服务器上,Cookie数据存放在客户的浏览器上

session的生命周期
生命周期
[AppleScript] 纯文本查看 复制代码
?

创建
第一次执行request.getSession()时创建
销毁

服务器(非正常)关闭   
Session过期        
     tomcat下web.xml自动配置    
 手动销毁        
     session.invalidate();

服务器关闭,session就销毁了嘛?
[AppleScript] 纯文本查看 复制代码
?
1
不对,有时间的,看session是否过期

session和cookie区别

session保存在服务器,cookie保存在客户端session中保存的时对象,cookie保存的是字符串session不能区分路径,同一个用户访问一个网站期间,所有的session在任何一个地方都可以访问cookie如果设置路径,则在某些地方不能访问session需要借助cookie才能正常工作,如果禁用cookie,session则失效客户端会在发送请求的时候,自动将本地存活的cookie封装在信息头发送给服务器

session和cookie应用场景

session上下文机制,针对每一个用户,通过sessionid来区分不同客户session是以cookie或url重写为基础的,默认使用cookie实现,系统会创造一个名为jsessionid的输出cookie重要状态走session,不重要走cookie,登陆信息用session,购物车用cookie

更多技术资讯可关注:gzitcast

点赞
收藏
评论区
推荐文章
喷火龙 喷火龙
4年前
cookie和session的详解与区别
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session。1.1 C
Wesley13 Wesley13
4年前
Java Web学习总结(11)——Session使用示例教程
一、Session简单介绍  在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中
Wesley13 Wesley13
4年前
Java认证:对session和cookie的一些理解
Java认证:对session和cookie的一些理解博客分类:java这篇文章虽然说的是JAVA中的session和cookie的使用,但是对于其他语言也是适用的。一、cookie机制和session机制的区别具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看
Stella981 Stella981
4年前
Django用户认证
COOKIE与SESSION概念cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生。cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问时,浏览器会自动带上cookie,这
Wesley13 Wesley13
4年前
Java web.xml session
在JavaWeb开发中,Session为我们提供了很多方便,Session是由浏览器和服务器之间维护的。Session超时理解为:浏览器和服务器之间创建了一个Session,由于客户端长时间(休眠时间)没有与服务器交互,服务器将此Session销毁,客户端再一次与服务器交互时之前的Session就不存在了。设置Session超时时间方式:方式一:在
Stella981 Stella981
4年前
PHP如何配置session存储在redis
当网站用户量增多的时候,正常的session存取就会出现有点慢的问题,如果提高速度呢。我们可以使用redis去保存session的会话信息。PHP的会话默认是以文件的形式存在的,可以配置到NoSQL中,即提高了访问速度,又能很好地实现会话共享。 配置方式如下: 方法一:修改php.ini的设置session.save\_handler
Stella981 Stella981
4年前
Django中的session的使用
一、Session的概念cookie是在浏览器端保存键值对数据,而session是在服务器端保存键值对数据session的使用依赖cookie:在使用Session后,会在Cookie中存储一个sessionid的数据,每次请求时浏览器都会将这个数据发给服务器,服务器在接收到sess
Stella981 Stella981
4年前
Spring Boot + Redis 处理 Session 共享
!(https://oscimg.oschina.net/oscnet/1c33266bc92f4817b73ae60421658769.png)背景Web开发中,通过Session在服务端记录用户状态是很常见的操作。对于Web开发中Session、Cookie等概念请参考《Session机制详解》
Stella981 Stella981
4年前
Django组件——cookie与session
Django组件——cookie与session<fontcolor00bff一、会话跟踪技术</font<fontcolorff7f501、什么是会话跟踪技术</font先了解一下什么是会话。可以把
Stella981 Stella981
4年前
SpringBoot整合SpringSeesion实现共享Session方案
Http协议本身是无状态的,为了保存会话信息,浏览器Cookie通过SessionID标识会话请求,服务器以SessionID为key来存储会话信息。在单实例应用中,可以考虑应用进程自身存储,随着应用体量的增长,需要横向扩容,多实例Session共享问题随之而来。下面假设我们使用Nginx来实现负载均衡横向扩节点:!(https://oscimg
Easter79 Easter79
4年前
SpringBoot整合SpringSeesion实现共享Session方案
Http协议本身是无状态的,为了保存会话信息,浏览器Cookie通过SessionID标识会话请求,服务器以SessionID为key来存储会话信息。在单实例应用中,可以考虑应用进程自身存储,随着应用体量的增长,需要横向扩容,多实例Session共享问题随之而来。下面假设我们使用Nginx来实现负载均衡横向扩节点:!(https://oscimg
安全客
安全客
Lv1
衣带渐宽终不悔,为伊消得人憔悴。
文章
3
粉丝
0
获赞
0