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

  • 相关阅读:
    Qt内存回收机制
    Qt坐标系统
    Qt信号与槽的使用
    Qt初始化代码基本说明
    Qt下载、安装及环境搭建
    搭建CentOs7的WebServer
    Laying out a webpage is easy with flex
    Let's write a framework.
    使用go语言开发一个后端gin框架的web项目
    个人总结的J2EE目前知道的涵盖面,从大方向入手,多写单元测试,加强基础
  • 原文地址:https://www.cnblogs.com/wangyuyanhello/p/13254469.html
Copyright © 2011-2022 走看看