正确的方法删除服务器端的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