cookie,session原理,以及如何使用chrome查看。

摘要:
首先,先补充下chrome浏览器的使用。同理下图可以查看cookie。第二次刷新:客户端把上一步生成的cookie带给服务器,也就是PHPSESSID=sjb2vafon1qi710hav8r8j5jl6这个鬼。服务器虽然有session_start代码,但是已经生成了一个了,所以没有关于cookie的操作。cookie和session的一个小区别,如果服务器代码为setcookie;$_COOKIE['xxx'];第一次运行该代码是取不到cookie的,因为第一次时,客户端的包头没有任何cookie传递给服务器,所以$_COOKIE为空,然后服务器返回给客户端的数据有setcookie,这个时候客户端才开始写入cookie到本地。

首先,先补充下chrome浏览器的使用。

1.1、php源码:

<?php
$cookieDomain = '.elf.com';
setcookie('elf', 'im elf cookie', time()+300, '/', $cookieDomain);
setcookie('aaa', 'aaaa', time()+10);

1.2、chrome效果

cookie,session原理,以及如何使用chrome查看。第1张

解释:头文件中request headers表示浏览器向服务器发送的包头,告诉服务器我这边的信息,顺带带上我所有的cookie(无论你是否请求cookie,只要是本域名下和本域名的主域名下的cookie都返回)。

response headers表示服务器返回给浏览器的包头,其中set-cookie表示服务器说“喂,浏览器,给我写入这些cookie到你本地去”。

同理下图可以查看cookie。

cookie,session原理,以及如何使用chrome查看。第2张

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

1、3,修改服务器代码如下:

session_start();
echo 'cookie';
var_dump($_COOKIE);

1、4,第一次刷新浏览器

cookie,session原理,以及如何使用chrome查看。第3张cookie,session原理,以及如何使用chrome查看。第4张

1,5、第二次刷新浏览器

cookie,session原理,以及如何使用chrome查看。第5张cookie,session原理,以及如何使用chrome查看。第6张

两次刷新略有不同,

第一次刷新:

客户端没有任何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'];时,是成功的。

免责声明:文章转载自《cookie,session原理,以及如何使用chrome查看。》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇将xls/csv数据导入到ES中使用jest进行单元测试下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Java中通过方法创建一个http连接并请求(服务器间进行通信)

服务器间进行通信只能通过流(Stream)的方式进行,不能用方法的返回值。 1.Java代码创建一个连接并请求该连接返回的数据 doGet()方法,execute()方法中调用 packagedemo2.x.com; importjava.io.BufferedReader; importjava.io.InputStream; importjava...

门户系统整合sso cookie共享及显示用户信息

1.1 门户系统整合sso 在门户系统点击登录连接跳转到登录页面。登录成功后,跳转到门户系统的首页,在门户系统中需要从cookie中 把token取出来。所以必须在登录成功后把token写入cookie。并且cookie的值必须在系统之间能共享。 1.1.1 Cookie共享: 1、Domain:必须是相同的。 例如有多个域名: www.taotao....

在Express和Socket.IO中使用session

在Express和Socket.IO中使用session_三水清 在Express和Socket.IO中使用session 在nodejs项目中对于一些认证需要用到session,例如我写的nodejs 聊天室的demo,就是通过session实现的认证。当存在session,直接进入聊天室,而不会重新登录。 在网上也找到不少关于Express框架中的...

express中间件

中间件(Middleware)可以理解为一个对用户请求进行过滤和预处理的东西,它一般不会直接对客户端进行响应,而是将处理之后的结果传递下去。 Express支持的中间件在express官网中可以看出express本身支持若干中间件: basicAuth:基本的身份认证功能,处理之后可以通过req.user属性访问被认证的用户对象 bodyParser:完...

chrome浏览器控制台 console不打印信息问题解决办法。

转自:https://blog.csdn.net/wang17866603359/article/details/79083776 最近换了安装chrome,想按F12调试下代码,发现控制台什么信息都没有。所以给大家分享下解决办法: 点击就会自动把勾勾上。这样就可以了。...

selenium webdriver 执行原理

selenium webdriver源码结构 Python版的源码结构,只看webdriver相关 selenium-masterpyseleniumwebdriver emote 下的文件 |-- command.py 命令相关...