谁一开始就是大神?

请教一下Yii2COOKIE已经设置过期时间打印出来显示为NULL[2.0]

1.jpg

2.png

这里有个重要的概念:cookie是存在于客户端的。
在你服务端对浏览器返回了创建cookie的header头时,浏览器则会根据服务端返回的cookie创建规则去创建cookie,规则中包含着name,value,expire等。 cookie的本质就是一个小小的纯文本文件。
而等到下次浏览器再次发起一个请求时,则会自动去客户端存在的cookie的集合中去寻找应当被通过 request header 发送到服务端的cookie。但是这个被发送的cookie并不包含expire。所以你打印 request header 中 cookie expire的结果为null。你可以理解为 被你用来打印请求 cookie expire的 request 组件代表着http协议的 request header。
对于服务端发送创建cookie的header到浏览器创建及发送cookie的交互过程,chrome的f12记录的一清二楚。
当然,如果你想要判断当前的cookie有没有过期,完全不需要通过你之前设置的过期时间去判断,因为cookie一旦过期。则不会被浏览器发送到服务器。你服务器根本就接受不到。当然,如果你实在需要一个类似于过期时间的东西,那么你可以把这个东西放入 cookie 的 value 中。毕竟cookie的value服务器是完全可以接收的。
我觉得这篇文章吊的不要不要的:
http://bubkoo.com/2014/04/21/http-cookies-explained/

赞(0) 打赏
未经允许不得转载:菜鸟之家 » 请教一下Yii2COOKIE已经设置过期时间打印出来显示为NULL[2.0]

评论 抢沙发

登录

找回密码

注册