你们都知道cookie是存在客户端,session存在服务器端。那么客户端具体是怎样获取cookie信息的呢?php
更好的阅读体验可访问 这里。web
实验环境:xampp + Thinkphp5 + Firefox浏览器
首先清除浏览器的cookie缓存和服务器端的session文件。缓存
注:查看session存放位置的php代码为:服务器
<?php //~ 当前session存放位置 $sessionpath = session_save_path(); echo $sessionpath;
如今,浏览器既没有cookie信息,服务器端也不存在session文件。cookie
在浏览器右键查看元素,开始访问搭建的网站。
网络
点击网络=》点击要查看的包=》可在响应头部发现Set-Cookie
字段,也就是这时,服务器端返回了咱们cookie。咱们的浏览器也就存储了该cookie信息。之后咱们再次访问该网站时,都会带着这个cookie信息。session
那么如今服务器端的session信息是怎么个状况呢?
网站
能够发现,此时已经生成了不少文件。其中最重要的文件也就是标记的那个,是服务器为咱们生成的session文件(sess_后的内容与服务器端返回给咱们的cookie一致)。可是由于咱们尚未登录,因此此时文件内容为空,大小为0KB。3d
而后咱们登录。再次去查看session文件。
发现文件大小已经变为了1KB。其中存储着咱们的登录信息。(文件的内容与咱们具体代码的实现相关)
之后当咱们访问该网站时,就会在请求头部带上cookie信息。像这样:
而后服务器端接收到cookie信息,就会去查找session文件的内容,若是发现文件记录了你已经登录过,那么就不用再次登录。
至此,session的做用也就体现了出来。
能够发现session与cookie是密不可分的,任一方出了问题,都不能发挥出它的做用。例如:若是浏览器端清除了cookie信息,或者服务器端的session文件被删除,那么就须要从新登录,从新生成互相匹配的cookie和session才可达到用户免登录的效果。一样,若是浏览器端禁用了cookie,该目的也不能达到。