cookie.md

shuyepl 2022-07-10 10:36:12
Categories: Tags:

cookie 是什么

在服务器向浏览器,或者浏览器向服务器发送的数据中,那个 sessionid 对应的信息就是 cookie 。

cookie 保存在哪里

浏览器最终保存在浏览器客户端,可能保存在运行内存中,也可能保存在硬盘文件上,后者可以永久保存,而前者只要浏览器关闭,相关信息就消失了。

cookie 的作用

将会话状态保存在浏览器客户端上。

cookie 的组成

HTTP 协议规定,任何一个 cookie 都是由字符串型的 name 和 value 组成的。

Java 的 Servlet 对 cookie 的支持

有一个专门的类表示 cookie 对象,这个类是 jakarta.servlet.http.Cookie ,这个类只有一个有参数的构造方法,里面填写的参数分别是 cookie 的 name 和 value 。

cookie 怎么发送到浏览器中

通过 response 的 void addCookie(Cookie cookie) 方法。

注意:从浏览器向服务器发送 cookie 这个过程是浏览器自动完成的,HTTP 协议规定了在浏览器发送请求的时候自动将该 path 下的 cookie 发送给服务器。

cookie 相关方法

public void setmaxAge()

设置 cookie 的有效时间,参数是一个数字,以秒为单位。设置这个东西之后,在服务器向浏览器发送的响应中,cookie 信息的后面会跟上 cookie 的有效时长信息和过期的时间(按国际标准时间计算),并且只要设置的时间大于 0 ,cookie 就会保存到硬盘文件中。如果没有设置有效时间的话,cookie 保存在浏览器的运行内存中,浏览器关闭,cookie 就消失。如果设置的时间为 0 ,则这样设置的功能主要是删除浏览器上的同名 cookie 。如果设置的参数为负值,则表示该 cookie 不会被存储硬盘文件中,被存储在浏览器运行内存当中。

public void setPath()

手动设置 cookie 的 path 。

cookie 在没有设置路径的情况下,默认的路径是获取 cookie 时发送请求链接的父路径及该父路径的所有子路径。如果设置了路径的话,那么这个路径下所有的子路径链接,在发送请求的时候都能携带这个 cookie 。

怎么接收 cookie

使用 request 的 getCookies() 方法,返回一个 Cookie 数组,如果请求中没有 cookie 的话,这个方法会返回一个 null 。

获取 cookie 的 name 和 value

分别调用以下的两个方法

cookie.getName();
cookie.getValue();

参考资料:https://www.bilibili.com/video/BV1Z3411C7NZ?p=50&share_source=copy_web