• session 跟 cookie 关系


    面试经验:
    谈到Session的时候就侃Session和Cookie的关系:Cookie中的SessionId。
    和别人对比说自己懂这个原理而给工作带来的方便之处。
     
    session 跟 cookie 关系 - hzh - The Legend of 1900
     
    客户第一次发送请求给服务器,此时服务器产生一个唯一的sessionID,并返回给客户端(通过cookie),此时的cookie并没有setMaxAge();只是保存于客户端的内存中,并与一个浏览器窗口对应着,由于HTTP协议的特性,这一次连接就断开了
    以后此客户端再发送请求给服务器的时候,就会在请求request中携带cookie,由于cookie中有sessionID,所以服务器就知道这是刚才那个客户,从而区分不同的人,购物车就是这样实现的
    举 个简单例子就像人们去超市购物,去存包,第一个去的时候(客户第一次发送请求给服务器),超市会给你一个号码牌(此时服务器产生一个唯一的 sessionID,并返回给客户端(通过cookie)),你可以在你自己的柜子里存东西(在服务器属于此客户的内存区域存数据),下次你再去的时候, 拿着这个号码牌(请求request中携带cookie),超市就知道哪些东西是你的,然后给你取出来,如果你几天都没去取(session失效了,在服 务器端配置),你再去的时候东西就拿不到了
    如果你把这个号码牌丢了(刚才的cookie失效了,比如你重启电脑,刚才存于内存中sessionID也就丢了),再去拿东西,当然无法定位了,也就拿不到东西了
    如果是新打开一个浏览器的情况,那就像是又一个人去超市存东西一样,你的东西跟他的东西是两码事,互不影响,他有他自己的sessionID,你有你自己的

    以下是我用firefox中的firebug测试结果
    第一次请求时:(注意,访问jsp时会自动创建sessionID,而访问Servlet,需要你自己写代码才会创建sessionID)
    session 跟 cookie 关系 - hzh - The Legend of 1900
     可以看到服务器给我们分配了一个sessionID,随着响应返回给客户端

    第二次请求时:
    session 跟 cookie 关系 - hzh - The Legend of 1900
     之后请求时,客户端都会携带这个sessionID,以便服务器能辨认
  • 相关阅读:
    redis_String
    redis单线程架构
    redis数据结构与内部编码
    常用命令
    Tomcat:web服务器软件
    mysql数据库-备份与还原实操
    mysql数据库-备份方式简介与规范
    mysql数据库-日志管理
    mysql数据库-简介
    在 Kubernetes 集群在线部署 KubeSphere
  • 原文地址:https://www.cnblogs.com/joean/p/4609253.html
Copyright © 2020-2023  润新知