ITPub博客

首页 > 应用开发 > Java > session和cookie

session和cookie

原创 Java 作者:山有木xi 时间:2020-02-25 20:09:24 0 删除 编辑

session和cookie有什么区别呢?

  • 由于HTTP协议是无状态的协议,所以服务端需要时时记录用户的状态,就需要用某种机制来识别具体的用户

  • session是一个存在于服务器上的类似一个散列表格的文件。里面存有我们需要的信息,在需要时可以从里面取出信息。可以将其视为一个大型的map,里面储存用户端sessionID,用户向服务器发送请求时会带上这个sessionID,取出相应的值

  • session应用场景:购物网站中当你点击“加入购物车”按钮,由于HTTP协议无状态,所以并不知道哪个是用户操作的,这时需要为特定的用户创建了特定的session,用于标识,跟踪用户,这样才知道将哪些物品放入购物车,这个session是放入服务器端的。在服务器端中保存session的方法很多,有内存、数据库、文件等。集群的时候也要考虑session的专一,在大型网站,也会有相应的专门的session服务器集群,用来保存用户会话,这个时候session信息放在内存中,使用一些缓存技术来放session,例如:Memcached

  • cookie应用场景:当登录网站时,下次希望这个网站能记住自己的账号,那么就需要建立一个本地cookie。每次HTTP请求的时候,客户端都会发送相应的cookie信息到服务器端。大多数都用cookie实现session跟踪,即第一次创建session的时候再cookie里面记录sessionID,此后每次请求都会把这个ID发往服务器端,服务器端就知道该处理什么了,如果浏览器禁用了cookie,则需要URL重写进行会话跟踪,就是每次HTTP交互的时候,URL后面会被附加以上,例如:sid=123456  这样的参数,服务端依此来识别用户

  • cookie与session一般认为是两个独立的东西,session采用的是服务器端保持状态的方法,cookie采用的客户端保持状态的方法 但是,在禁止cookie后,session也不能实现,因为session是用sessionID来确定当前对话所对应的服务器session,而sessionID是通过cookie传递的,禁用cookie相对于失去了sessionID,也就无法得到session了,此时需要用URL或者隐藏表单传递sessionID

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69917874/viewspace-2677185/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle OCA(Java),IBM高级工程师认证,中国软件行业人才(高级c语言),高级Android工程师,对数据库并发与性能调优也有一定了解

注册时间:2019-04-25

  • 博文量
    147
  • 访问量
    390762