zoukankan      html  css  js  c++  java
  • 69 如果客户端禁止 cookie 能实现 session 还能用吗?

    答:

    原文链接: https://www.jianshu.com/p/c35ef7eaf503 (代码)
    原文链接: https://blog.csdn.net/meism5/article/details/90414108 (概念)
     

    在默认的JSP、PHP配置中,SessionID是需要存储在Cookie中的,默认Cookie名为:

    PHPSESSIONID
    
    JSESSIONID
    

     

    以下以PHP为例:

    你第一次访问网站时,
    
    服务端脚本中开启了Sessionsession_start();,
    
    服务器会生成一个不重复的 SESSIONID 的文件session_id();,比如在/var/lib/php/session目录
    
    并将返回(Response)如下的HTTP头 Set-Cookie:PHPSESSIONID=xxxxxxx
    
    客户端接收到Set-Cookie的头,将PHPSESSIONID写入cookie
    
    当你第二次访问页面时,所有Cookie会附带的请求头(Request)发送给服务器端
    
    服务器识别PHPSESSIONID这个cookie,然后去session目录查找对应session文件,
    
    找到这个session文件后,检查是否过期,如果没有过期,去读取Session文件中的配置;如果已经过期,清空其中的配置
    

     

    如果客户端禁用了Cookie,那PHPSESSIONID都无法写入客户端,Session还能用?

    答案显而易见:不能

    并且服务端因为没有得到PHPSESSIONID的cookie,会不停的生成session_id文件
     

    1. 通过url重写,把 sessionid 作为参数追加的原 url 中,后续的浏览器与服务器交互中携带 sessionid 参数。

    2. 服务器的返回数据中包含 sessionid,浏览器发送请求时,携带 sessionid 参数。

    3. 通过 Http 协议其他 header 字段,服务器每次返回时设置该 header 字段信息,浏览器中 js 读取该 header 字段,请求服务器时,js设置携带该 header 字段。
       

  • 相关阅读:
    盛最多水容器
    罗马数字和整数互相转化
    v-if和v-for
    扫描二维码登录
    使用Promise实现红绿灯交替重复亮
    利用promise实现间隔1s打印1,2,3
    原生js拖拽
    react项目引入使用element-react报错
    php实现类似淘宝最近浏览商品的功能模型代码
    教你如何把php项目打包成EXE文件发布
  • 原文地址:https://www.cnblogs.com/ynzj123/p/12985291.html
Copyright © 2011-2022 走看看