zoukankan      html  css  js  c++  java
  • cookie、session原理,以及如何使用chrome查看。

    一、cookie、session 在chrome浏览器里如何显示的。

    1. php源码:
    <?php
    
    $cookieDomain = '.elf.com';
    
    setcookie('elf', 'im elf cookie', time()+300, '/', $cookieDomain);
    
    setcookie('aaa', 'aaaa', time()+10);
    
    1. chrome效果

    解释:头文件中request headers表示浏览器向服务器发送的包头,告诉服务器我这边的信息,顺带带上我所有的cookie(无论你是否请求cookie,只要是本域名下和本域名的主域名下的cookie都返回)。
    response headers表示服务器返回给浏览器的包头,其中set-cookie表示服务器说“喂,浏览器,给我写入这些cookie到你本地去”。
    同理下图可以查看cookie。

    注意上面两张图,没有PHPSESSID这个cookie哟。。。

    1. 修改服务器代码如下:
    session_start();
    
    echo 'cookie';
    var_dump($_COOKIE);
    
    1. 第一次刷新浏览器

    1. 第二次刷新浏览器

    两次刷新略有不同,
    第一次刷新:
    客户端没有任何cookie给服务器,
    服务器运行代码session_start后,会自动生成一个session id,存放在cookie里,该cookie的key默认是PHPSESSID,value就是session id。所以服务器告诉客户端,“喂,给我set一个cookie,key是。。。value是。。。”
    第二次刷新:
    客户端把上一步生成的cookie带给服务器,也就是PHPSESSID=sjb2vafon1qi710hav8r8j5jl6这个鬼。
    服务器虽然有session_start代码,但是已经生成了一个了,所以没有关于cookie的操作。


    备注:关于session id的生成,上面已经说了,session_start时自动生成,每个服务器对应每个浏览器的域名(bbs.a.com和login.a.com是不同域名)生成唯一一个,当浏览器关闭时,该session id失效,运行session_start会重新生成一个不同的session id存放在本地key为PHPSESSID的cookie里面。
    关于session的数据,是存放在该web服务器里面的(默认/tmp目录),使用$_SESSION命令取session数据时,服务器会自动根据session id去找对应的session数据。

    二、cookie和session的一个小区别

    如果服务器代码为setcookie('xxx','xxx',time); $_COOKIE['xxx'];
    第一次运行该代码是取不到cookie的,因为第一次时,客户端的包头没有任何cookie传递给服务器,所以$_COOKIE为空,然后服务器返回给客户端的数据有setcookie,这个时候客户端才开始写入cookie到本地。
    第二次运行,客户端包头就会把本地的所有cookie传递给服务器(包含主域名下的cookie)
    同理,
    换做session就不会有这个问题,比如服务器代码为session_start();$_SESSION['xxx'] = ‘xxx’; echo $_SESSION['xxx'];
    第一次运行时,服务器是能取到key为xxx的session的。因为session_start时,服务器就生成了一个session id,并且在服务器开辟了一个空间存放该session id对应的data,所以$_SESSION['xxx'] = ‘xxx’这一步的数据此时已经写入到服务器了,
    再echo $_SESSION['xxx'];时,是成功的。
     
    源自:https://www.cnblogs.com/alazalazalaz/p/5711157.html

  • 相关阅读:
    Django组件——分页器
    Django与Ajax
    Python常用模块——包&跨模块代码调用
    Python常用模块——正则表达式re模块
    Python常用模块——文件复制模块shutil
    Python常用模块——hashlib加密
    git小乌龟配置
    设计模式学习(27)- MVC模式
    设计模式学习(26)- 访问者模式
    设计模式学习(25)- 模板模式
  • 原文地址:https://www.cnblogs.com/wangyuyanhello/p/13254469.html
Copyright © 2011-2022 走看看