PHP.相关技术.cookie

cookie的基本流程如下:

  1. 设置cookie(可以用PHP,JS进行设置)
  2. cookie被自动添加到request header中
  3. 服务端接收到cookie,进行操作
什么是cookie?

cookie是浏览器自带的,存储到客户端,具体来说是一个纯文本文件,每个浏览器存储的位置都不一样。

cookie有什么用?

每次访问服务器的时候,浏览器都会查看是否有相应的cookie,有则自动添加在request header中的cookie字段中。

什么数据适合存储到cookie里?

可以重复使用的数据,如认证信息等。但是cookie是有限制的,最大为4KB,最多为20个。

cookie有哪些属性?

cookie有7大属性。分别为

  • name:cookie名称.

  • value:cookie值。

  • expire:过期时间,是一个unix时间戳

    • 如果设置成零,或者忽略参数, Cookie 会在会话结束时过期(也就是关掉浏览器时)。

    • 在HTTP1.1中新增了 max-age 选项,使用该选项而不用 expire

        max-age 的值是一个以秒为单位时间段(cookie失效时刻= 创建时刻+ max-age)。
      
        max-age 的默认值是 -1(即有效期为 session );
        若max-age有三种可能值:负数、0、正数。
        负数:有效期session;0:删除cookie;正数:有效期为创建时刻+ max-age
      
  • domain:域名,默认值为设置该cookie的网页所在的域名

  • path:是路径,默认值为设置该cookie的网页所在的目录

  • secure:必须为安全的URL才会发送

  • httpOnly:Cookie 仅可通过 HTTP 协议访问,js无法操作。这种类型的cookie只能通过服务端来设置

如何设置cookie?
  • 服务器端

    • 如PHP,使用 setcookie() 函数设置,设置完成后,会通过 response 的 set-cookie选项保存到客户端

    • 以上七个属性都能进行设置

    • 每个 set-cookie 选项会设置一个,想设置多个,使用多个 set-cookie

  • 客户端

    • 如JS,使用 document.cookie="test=11"; 进行设置
如何修改和删除cookie
  • 修改: path/domain值一致的情况下,直接赋值即可。
  • 删除: path/domain值一致的情况下,将 expire 字段设置为一个过去的时间即可。
cookie编码

cookie其实是个字符串,但这个字符串中逗号、分号、空格被当做了特殊符号。所以当cookie的 key 和 value 中含有这3个特殊字符时,需要对其进行额外编码,一般会用escape进行编码,读取时用unescape进行解码;当然也可以用encodeURIComponent/decodeURIComponent或者encodeURI/decodeURI(三者的区别可以参考这篇文章)

原文地址:https://www.cnblogs.com/qiye5757/p/9762911.html