保存状态后按规则返回
服务器用Set-Cookie响应字段设置状态,用户代理在后续适用请求的Cookie字段返回名称—值。值可以是语言偏好,也可以只是一个引用服务端会话的标识;Cookie机制并不要求把完整用户资料都直接存进浏览器。
Domain控制主机范围,省略时通常限定设置它的主机;Path进一步参与发送路径匹配。但Cookie不按端口提供隔离,Path也不是可信的安全分区,不能据此把同主机不同路径的互不信任应用当作已经可靠隔开。
参考:[1]
保护属性约束不同的暴露路径
Secure限制通过适当安全通道发送,HttpOnly限制脚本等非HTTP接口读取,两者可以同时存在但功能不同。设置HttpOnly不会阻止浏览器在合适的HTTP请求中带上Cookie,因此不能只凭它排除用户会话被用于非其本意操作。
SameSite还参与跨站发送条件,把Strict、Lax等模式与导航、方法和站点背景联系起来。同站与同源仍不同,这项属性不代替资源权限或请求绑定;保护效果需要结合实际交互背景判断,而不是只看字段是否存在。
浏览器保存与服务端接受分别到期
Expires给出到期时刻,Max-Age给出最长持续秒数;二者同时存在时,RFC 6265规定Max-Age优先。用户代理也可能因删除、空间或隐私策略提前移除Cookie,所以一个未来日期不是保证一定保存到那时的承诺。
服务端会话还可独立退出、超时或撤销。Cookie尚存不证明会话仍有效,删除浏览器中的值也不自动说明所有被复制的服务端凭据已撤销。服务须按自身规则核对会话有效期与撤销状态。