如何删除HTTP响应中的cookie?

时间:2013-12-02 03:54:19

标签: http cookies

指示浏览器删除(或不再使用)HTTP响应中为给定域发出的HTTP cookie的首选方法是什么?

(我知道您不能强制浏览器删除cookie,但必须有一种方法可以表明它不再有效且不应再发送)

2 个答案:

答案 0 :(得分:20)

只需将Cookie设置为完全相同的名称,路径和域名,但过去的值为Expires。 (可选)将值设置为null / empty-string,即使它只是为了节省带宽,否则普通客户端无论如何都会忽略它。

请注意,设置完全相同的路径非常重要。许多初学者都失败了,只使用相同的名称和域,并依赖于默认路径的当前请求URL。

来自RFC6265 spec

  

最后,要删除cookie,服务器将返回Set-Cookie标头      过去有效期。服务器将成功      仅在路径和域属性中删除cookie时      Set-Cookie标头匹配cookie所用的值      创建

使用Max-Age=0也适用于任何符合规范的用户代理,但规范规定服务器“应该”不这样做。根据{{​​3}},这显然意味着最大限度地提高与仅支持正Max-Age值的不合规用户代理的互操作性。

答案 1 :(得分:-1)

您可以将时间设置为0或任何已过期的时间。

在PHP中,您可以使用以下内容,但对于您的场景,您可能只会从中获取时间被操纵的事实

// Use the following for immediate elimination for current running server script
unset($_COOKIE['cookiename']); 

// In order to eliminate all together which involves notifying client-side. Expire time
setcookie('cookiename', '', time() - 3600);