前端开发中:cookie 构成部分有哪些

📌 温馨提示:
本文内容可能随时间变动而失效,请以页面显示的更新时间为准。
若内容已不准确或资源失效,欢迎留言或联系站长反馈修正。
⚠️ 免责声明:
本文仅供学习与参考,观点仅代表作者个人意见,与本站无关。
如有侵权问题,请立即联系我们处理,谢谢理解与支持。

在前端开发中,cookie由多个部分构成,各部分在数据存储和传输过程中发挥着不同作用:

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

请登录后发表评论

    暂无评论内容