cookie详解

HTTP Cookie用于跟踪用户会话和存储信息,分为会话cookie和持久cookie,前者在浏览器关闭时消失,后者长期存储。cookie包含属性如域、路径、过期时间和安全性,通过Set-Cookie响应首部设置,并在Cookie请求首部发送回服务器。浏览器根据域、路径和安全条件筛选并发送未过期的cookie。

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

cookie分类

cookie分为2类:会话cookie和持久cookie。会话cookie是一种临时cookie,它记录了用户访问站点时的设置和偏好。用户退出浏览器时,会话就被删除了。持久cookie的生存时间更长一些,它们存储在硬盘上,浏览器退出,计算机重启时,它们仍然存在。通常会用持久cookie维护某个用户会周期性访问的网站的配置文件或登陆名。
会话cookie和持久cookie之间唯一的区别就是它们的过期时间。如果设置了Discard参数,或者没有设置Expire/Max-Age参数来说明扩展的过期时间,找个cookie就是一个会话cookie。
浏览器会记住从服务器返回的set-cookie或者set-cookie2首部中的cookie内容,并将cookie集存储在浏览器的cookie数据库中。
cookie的基本思想是让浏览器积累一组服务器特有的信息,每次访问服务器时都将这些信息提供给它。因为浏览器要负责存储cookie信息,所以此系统被称为客户端侧状态。

cookie属性

1.cookie的域属性
产生cookie的服务器可以向set-cookie响应首部添加一个Domian属性来控制哪些站点可以看到那个cookie。比如,下面的HTTP响应首部就是在告诉浏览器将cookie user=“mary17” 发送给域 ".airtravelbargins.com"中的所有站点:
Set-Cookie: user=“mary17”; domain=“airtravelbargins.com”
如果用户访问的是www.airtravelbargins.com,specials.airtravelbargins.com或者任意以.airtravelbargins.com结尾的站点,下列Cookie首部都会被发布出去:
Cookie: user=“mary17”

2.cookie的路径属性
cookie规范甚至允许用户将cookie与部分web站点关联起来。可以通过Path属性来实现这一功能,在这个属性列出的URL路径前缀下所有的cookie都是有效的。
Set-Cookie: pref=compact; domain=“airtravelbargins.com”;path=/autos/
如果用户访问http://www.airtravelbargins.com/specials.html,就只会获得这个cookie:
Cookie: user=“mary17”
但是如果访问http://www.airtravelbargins.com/autos/cheapo/index.html,就会获得这2个cookie:
Cookie: user=“mary17”
Cookie: pref=compact
因此,cookie就是由服务器贴到客户端上,有客户端维护的状态片段,只会发送给那些合适的站点。

Cookie组成

1.response header中的set-cookie首部
Set-Cookie首部有一个强制的 cookie名和cookie值。后面跟着可选的cookie属性中间有分毫不差间隔。

set-cookie属性描述及实例
NAME=VALUE强制的。NAME和VALUE都是字符序列。web服务器可以创建任意的NAME=VALUE关联,在后续对站点的访问中会将其送回给Web服务器
Expire可选的。这个属性会指定一个日期字符串,用来定义cookie的实际生存期。一旦到了过期日期,就不会再存储或发布这个cookie了。
Domain可选的。浏览器只向指定域中的服务器主机名发送cookie。这样服务器就将cookie限制在了特定的域中。如果没有制定域名,就默认产生Set-Cookie响应的服务器的主机名
Path可选的。通过这个属性可以为服务器上特定的文档分配cookie。如果path属性是一个URL路径的前缀,就可以附加一个cookie。路径/foo与/foobar和/foo/bar.html相匹配。路径"/"与域名中所有内容都匹配。如果没有制定路径,就将其设置为产生Set-Cookie响应的URL的路径
Secure可选的。如果包含了这一属性,就只有在HTTP使用SSL安全连接时才会发送cookie

2.request header中的Cookie首部
客户端发送请求时,会将所有与域,路径和安全过滤器相匹配的未过期的cookie都发送给这个站点。所有cookie都被组合到一个Cookie首部中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值