Cookie的使用

Cookie是HTTP协议中用于保持会话状态的一种机制。服务器通过response发送Cookie到客户端,客户端在后续请求中携带Cookie回传。主要用于用户身份跟踪、购物车信息存储和访问次数记录。设置Cookie包括指定名称、值、有效期、路径、域名、安全性等属性。删除或修改Cookie需创建具有相同名称但不同值或过期时间的Cookie。注意,修改和删除时其他属性需一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 定义


cookie是由服务器发送给客户端(浏览器)的小量信息。

2. 作用

我们知道,平时上网时都是使用无状态的HTTP协议传输出数据,这意味着客户端与服务端在数据传送完成后就会中断连接。这时我们就需要一个一直保持会话连接的机制。在session出现前,cookie就完全充当了这种角色。也就是,cookie的小量信息能帮助我们跟踪会话。一般该信息记录用户身份。

当然cookie也常记录跟踪购物车的商品信息(如数量)、记录用户访问次数等。

3. 原理


客户端请求服务器时,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。而客户端浏览器会把Cookie保存起来。当浏览器再请求服务器时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器通过检查该Cookie来获取用户状态。

Cookie的方法

方法名返回类型说明
setValue(String newValue)void给当前cookie重新赋值
setComment(String purpose)void对该cookie进行描述的信息(说明作用),浏览器显示cookie信息时能看到
setDomain(String pattern)void符合该pattern(域名正则)的域名就可以访问该Cookie。如果设置为“.google.com”,则所有以“google.com”结尾的域名都可以访问该Cookie。注意第一个字符必须为“.”
setHttpOnly(boolean httpOnly)void设为true后,只能通过http访问,javascript无法访问,还可防止xss读取cookie
setMaxAge(int expiry)void该Cookie失效时间,单位秒。如果为正数,则该Cookie在expiry秒之后失效。如果为负数,该Cookie为临时Cookie,关闭浏览器即失效,浏览器也不会以任何形式保存该Cookie。如果为0,表示删除该Cookie。默认为–1
setPath(String uri)void设置Cookie的使用路径。后面紧接着详解。如果设置为“/agx/”,则只有uri为“/agx”的程序可以访问该Cookie。如果设置为“/”,则本域名下的uri都可以访问该Cookie。注意最后一个字符必须为”/”
setSecure(boolean flag)void是否使用安全传输协议。为true时,只有当是https请求连接时cookie才会发送给服务器端,而http时不会,但是服务端还是可以发送给浏览端的。

Cookie的使用

添加cookie示例


获取客户端的Cookie时,只能获取name与value属性,其它属性都不会被提交。

Cookie c = new Cookie("username","peter");        // 新建一个Cookie对象
c.setMaxAge(24*60*60);                    // 设置过期时间1天,以秒为单位
response.addCookie(c);                    // 保存cookie到客户端

删除cookie示例


删除某个Cookie时,只需要新建一个只有maxAge和value不一样的同名Cookie,然后添加到response中覆盖原来的Cookie

Cookie cookie = new Cookie("username","peter");        // 新建Cookie
cookie.setMaxAge(0);                           // 设置生命周期为0,表示将要删除
response.addCookie(cookie);                    // 执行添加后就从response里删除了


修改cookie示例

修改某个Cookie时,只需要新建一个只有value属性不一样的同名Cookie,然后添加到response中覆盖原来的Cookie

Cookie cookie = new Cookie("username","joker");        // 新建Cookie
cookie.setMaxAge(24*60*60);                    // 设置生命周期
response.addCookie(cookie);                    // 执行添加后就从response里覆盖修改了

注意:修改、删除Cookie时,新建的Cookie除value、maxAge之外的所有属性,例如name、path、domain等,都要与原Cookie完全一样。否则,浏览器将视为两个不同的Cookie而不会覆盖之前的Cookie,从而导致修改、删除失败

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啥也不会......

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值