正确的方法删除服务器端的Cookie
对于我的身份validation过程,我使用py-bcrypt在用户login时将创build一个唯一的标记,并将其放入用于身份validation的cookie中。
所以我会从服务器发送这样的东西:
Set-Cookie: token=$2a$12$T94df7ArHkpkX7RGYndcq.fKU.oRlkVLOkCBNrMilaSWnTcWtCfJC; path=/;
适用于所有浏览器。 然后要删除一个cookie,我发送一个类似的cookie,并在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)? 过去的设置方法看起来很庞大。 而且为什么这个工作在FF而不是在IE或Safari?
发送相同的cookie值; expires
附加的; expires
不会破坏cookie。
通过设置一个空值来使cookie无效,并包含一个expires
字段:
Set-Cookie: token=deleted; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT
请注意,您无法强制所有浏览器删除Cookie。 客户端可以configuration浏览器,使得cookie保持不变,即使已经过期。 如上所述设置值可以解决这个问题。
将“过期”设置为过去的date是删除cookie的标准方式。
你的问题可能是因为date格式不是常规的。 IE可能只预计GMT。
为什么不设置cookie的maxAge <0
// MaxAge=0 means no 'Max-Age' attribute specified. // MaxAge<0 means delete cookie now, equivalently 'Max-Age: 0' // MaxAge>0 means Max-Age attribute present and given in seconds MaxAge int