对于我的身份验证过程,我会在用户登录时创建一个唯一令牌并将其放入用于身份验证的 cookie 中。
所以我会从服务器发送这样的东西:
Set-Cookie: token=$2a$12$T94df7ArHkpkX7RGYndcq.fKU.oRlkVLOkCBNrMilaSWnTcWtCfJC; path=/;
适用于所有浏览器。然后要删除一个 cookie,我发送了一个类似的 cookie,其expires字段设置为 1970 年 1 月 1 日
expires
Set-Cookie: token=$2a$12$T94df7ArHkpkX7RGYndcq.fKU.oRlkVLOkCBNrMilaSWnTcWtCfJC; path=/; expires=Thu, Jan 01 1970 00:00:00 UTC;
这在 Firefox 上运行良好,但不会删除 IE 或 Safari 上的 cookie。
那么删除 cookie 的最佳方法是什么(最好不使用 JavaScript)?set-the-expires-in-the-past 方法似乎很笨重。还有为什么这在 FF 中有效,但在 IE 或 Safari 中无效?
发送带有附加的相同 cookie 值; expires不会破坏 cookie。
; expires
通过设置一个空值来使 cookie 无效并包含一个expires字段:
Set-Cookie: token=deleted; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT
请注意,您不能强制所有浏览器删除 cookie。客户端可以配置浏览器以使 cookie 持续存在,即使它已过期。如上所述设置值将解决此问题。