深入理解浏览器会话机制(session && cookie)

对于一个前端开发者,cookie我想大家都不陌生,经常会封装一些诸如setcookie,getcookie的方法,session就好像一个最熟悉的陌生人一样,在我们与后端开发者合作项目的时候会用到它,但是不理解它的本质,下面我们就来详细探讨下

存储位置:存储于客户端
作用:本域跨页面存储数据(我们似乎一般都用来username,password)

cookie一般包含如下图的信息:

这里写图片描述

传输:下面是一条http请求报文

这里写图片描述

在每次发送请求中,cookie都会随着http报文发向后台

cookie和session的关系

这里写图片描述

session

下面我以php语言为用例,讲解session

从上面可以看出session存储于服务器端,而且以文件的形式存储
session有好多特性,比如过期时间等,下面我们查看,打开php.ini文件(里面有php的诸多配置信息,我去除了n多注释)

这里写图片描述

下面我看看具体看看那个sessionID

这里写图片描述

可以看出,这也就与上面那个session.name = “PHPSESSID”不谋而合

我们已经清楚了前台浏览器是如何携带sessionID传输到后台,以及后台存储session文件的位置,那后台具体利用sessionID分析利用呢, 我们接着分析

为了分析机制,请看下面php代码

<?php
    session_start();
    header("Content-Type: text/html;charset=utf-8"); 
    if ($_SESSION['username'] != 'success') {
        /* /php/index.php为当前文件路径 */
        $string = <<< EOF
            <form action="/php/index.php" method="post">
                <input type="text" name="value">
                <input type="submit">
            </form>
EOF;
        echo $string;
    }
    if ($_SESSION['username'] == 'success') {
        echo "登录成功".PHP_EOL;
    }
    if ($_POST['value'] == 'ys') {
        $_SESSION['username'] = 'success';
        echo "登录成功".PHP_EOL;
    }
?>

执行了php文件,体验session过程

这里写图片描述

发现http的cookie头部中的sessionID和服务器session文件名一样
这样就能根据每次请求的session找到唯一的session文件,然后看看这个文件是怎么样的

username|S:7:"success";s|S:7:"success";ss|S:7:"success";

这是这个文件的内容,里面有s,ss,username,其中s和ss就是我之前测试的名字(可以忽略),也就是这样

username|S:7:"success";

然后每次后台就能根据sessionID确定唯一会话,设置诸如$_SESSION[‘username’]之类的加以判断,实现cookie之间的通信。

结语

至此,cookie和session之间的关系也就写完了,本文哪里有地方解释不对的,或者有地方需要补充的,欢迎大家留言意见,不胜感激~

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值