📌 温馨提示:
本文内容可能随时间变动而失效,请以页面显示的更新时间为准。
若内容已不准确或资源失效,欢迎留言或联系站长反馈修正。
⚠️ 免责声明:
本文仅供学习与参考,观点仅代表作者个人意见,与本站无关。
如有侵权问题,请立即联系我们处理,谢谢理解与支持。
本文内容可能随时间变动而失效,请以页面显示的更新时间为准。
若内容已不准确或资源失效,欢迎留言或联系站长反馈修正。
⚠️ 免责声明:
本文仅供学习与参考,观点仅代表作者个人意见,与本站无关。
如有侵权问题,请立即联系我们处理,谢谢理解与支持。
在前端开发中,cookie由多个部分构成,各部分在数据存储和传输过程中发挥着不同作用:
- 名称(Name):作为cookie的标识符,用于区分不同的cookie。在同一域名下,cookie名称需保持唯一 。名称在使用时不区分大小写,但为保持一致性和避免潜在问题,通常建议在代码中保持大小写一致。比如设置一个名为
username
的cookie来存储用户登录名,在获取和操作这个cookie时,就依据username
这个名称来进行 。 - 值(Value):与cookie名称关联的数据,是实际存储的内容。值必须进行URL编码,这是为了确保特殊字符(如空格、逗号、分号等)在传输和存储过程中不会引发问题。例如要存储用户的邮箱地址
user@example.com
,在cookie中会被编码成user%40example.com
。 - 域(Domain):规定了cookie所属的域名,决定了浏览器在哪些域名下会发送该cookie 。如果未明确指定,默认为设置cookie的当前域名。比如在
example.com
下设置了一个cookie,若未指定Domain
,那么只有在访问example.com
时,浏览器才会在请求头中携带该cookie;若指定Domain=example.com
,则访问example.com
及其子域名(如sub.example.com
)时,浏览器都会发送这个cookie。 - 路径(Path):指定了一个URL路径,只有当请求的URL包含该路径时,浏览器才会在请求中发送cookie 。以字符
/
作为路径分隔符,子路径也会被匹配。例如设置Path=/docs
,那么/docs
、/docs/article1
等路径的请求会携带该cookie,而/home
路径的请求则不会。 - 过期时间(Expires)/最大存活期(Max-Age):用于控制cookie的生命周期。
Expires
指定一个确切的过期日期,格式为Wdy, DD-Mon-YYYY HH:MM:SS GMT
;Max-Age
指定从创建开始cookie的有效时长(以秒为单位) 。会话期cookie不设置Expires
或Max-Age
,在浏览器关闭时就会被删除;持久性cookie则通过设置这两个属性之一,在规定时间内保持有效。比如设置Max-Age=3600
,表示这个cookie在创建后3600秒(1小时)内有效 。 - 安全标志(Secure):是一个布尔值标志,设置为
true
时,表明该cookie仅在使用HTTPS协议的安全连接下才会被发送到服务器,使用HTTP协议时不会发送 。这能防止在数据传输过程中,cookie被中间人窃取或篡改,保护数据安全 。例如在进行网上银行交易等涉及敏感信息的场景,就需要设置Secure
标志 。 - HttpOnly标志:也是一个布尔值标志,设置为
true
时,该cookie无法通过JavaScript的document.cookie
API访问 。这样可以有效减少跨站脚本攻击(XSS)带来的风险,因为恶意脚本无法获取和修改这类cookie,增强了安全性 。比如存储用户登录会话的cookie通常会设置HttpOnly
,避免被恶意脚本获取导致用户登录状态被窃取 。 - SameSite属性:用来控制cookie是否在跨站请求中发送,有
Strict
、Lax
和None
三个可能值。Strict
模式下,cookie仅在同源请求时发送;Lax
模式相对宽松,在一些跨站导航(如从外部链接点击进入站点)场景下会发送;None
表示允许在跨站请求中发送,但同时需要设置Secure
属性 。该属性为跨站请求伪造攻击(CSRF)提供了一定防护 。
THE END
暂无评论内容