美文网首页
聊一聊 cookie

聊一聊 cookie

作者: 杨杨1314 | 来源:发表于2016-10-20 16:24 被阅读17次

    cookie 是怎么工作的?

    首先必须明确一点,存储cookie是浏览器提供的功能。cookie其实是存储在浏览器中的纯文本,浏览器的安装目录下会专门有一个 cookie 文件夹来存放各个域下设置的cookie。

    当网页要发http请求时,浏览器会先检查是否有相应的cookie,有则自动添加在request header中的cookie字段中。这些是浏览器自动帮我们做的,而且每一次http请求浏览器都会自动帮我们做。这个特点很重要,因为这关系到“什么样的数据适合存储在cookie中”。

    存储在cookie中的数据,每次都会被浏览器自动放在http请求中,如果这些数据并不是每个请求都需要发给服务端的数据,浏览器这设置自动处理无疑增加了网络开销;但如果这些数据是每个请求都需要发给服务端的数据(比如身份认证信息),浏览器这设置自动处理就大大免去了重复添加操作。所以对于那设置“每次请求都要携带的信息(最典型的就是身份认证信息)”就特别适合放在cookie中,其他类型的数据就不适合了。

    但在 localStorage 出现之前,cookie被滥用当做了存储工具。什么数据都放在cookie中,即使这些数据只在页面中使用而不需要随请求传送到服务端。当然cookie标准还是做了一些限制的:每个域名下的cookie 的大小最大为4KB,每个域名下的cookie数量最多为20个(但很多浏览器厂商在具体实现时支持大于20个)。

    如何设置 cookie?

    setcookie每次只能设置一个kookie,因此,要使用cookie保存多个值需要设置多个cookie,但最多设置20 个。

    setcookie("username", "yanglijun", time()+3600);

    setcookie("age", "11", time()+3600);

    setcookie('sex','男',time()+3600);

    如果设置cookie过期,只需把时间设置为-的就可以:

    setcookie("username", "yanglijun", time()-1);

    var_dump($_COOKIE['username']);

    如何修改、删除

    修改 cookie

    要想修改一个cookie,只需要重新赋值就行,旧的值会被新的值覆盖。但要注意一点,在设置新cookie时,path/domain这几个选项一定要旧cookie 保持一样。否则不会修改旧值,而是添加了一个新的 cookie。

    删除 cookie

    删除一个cookie也挺简单,也是重新赋值,只要将这个新cookie的expires选项设置为一个过去的时间点就行了。但同样要注意,path/domain/这几个选项一定要旧cookie 保持一样。

    相关文章

      网友评论

          本文标题:聊一聊 cookie

          本文链接:https://www.haomeiwen.com/subject/urgfuttx.html