zoukankan      html  css  js  c++  java
  • session和 cookie之间扯不完的千丝万缕关系

    session简称S
    cookie简称C
    sessionid简称Sid


    S和C用来保持会话的,确认用户标识的。

    session文件主要存在session数组数据中$_SESSION,默认是暂用内存。

    第一次请求,服务器产生sid给cookie, cookie存在本地,第二次请求cookie发送sid给服务器。(服务器用Sid匹配存储的S文件,并得到对应ID的S存储的其他数据)。

    那么cookie什么时候过期?
    如果没有设置 cookie时间,默认session会话结束,一般指关闭浏览器(此时服务器的S信息任然保存,但是 cookie已不保存,尽管S还没过期但是cookie已过期),意味着cookie也过期(消失)。

    当然当长时间没请求时,默认会话是30分钟过期,服务器删除或者标识过期该Sid的S数据,尽管cookie还在但是S信息已过期,所以此时cookie发的sid过来也对应不上S数据,所以过期,当前会话结束。

    如果设置了 cookie过期时间,那么如果 cookie未超时,下次还会用这个会话 sid去服务器找Sid数据,如果此时服务器 sid文件过期或者已被删除,则会自行创建该sid的S数据(但是其他S数组数据要重新写S数组),并正常会话。(即只要C不过期,它所保留的sid尽管服务器S已经过期可以重新生成该SID额会话文件)。

    综上:
    cookie 如果设置了时间决定权大于session 的过期时间,如果C过期则意味着没有Sid,服务器重新生一个sid,如果C没过期服务器会用他所保留的sid创建会话,尽管服务器S早已过期。

    当然如果C和S其中任意一个过期失效则全部失效,S失效意味着 C的Sid在服务器没有对应文件,C失效意味着,C没有发送sid,则服务器重新生成sid.这种情况和上面设置了C时间的S过期不是同一个理解,注意区分。






  • 相关阅读:
    angularjs下载地址
    Could not calculate build plan: Plugin org.apache.maven.plugins:maven-resources-plugin:2.6 or one of
    java.net.SocketException: No buffer space available 异常
    在ubuntu上安装svn+apache2
    MyBatis配置
    npm被墙解决方法
    XMPP_05_网络编程
    XMPP_04_环境安装(配置客户端)
    XMPP_03_环境安装(配置服务器)
    XMPP_02_环境安装(准备工作和配置数据库)
  • 原文地址:https://www.cnblogs.com/linewman/p/9918833.html
Copyright © 2011-2022 走看看