如何在访问某个页面时删除客户端cookie?

时间:2013-10-25 14:53:28

标签: cookies coldfusion

我正在尝试在访问某个页面时删除客户端cookie。我该怎么做?即使使用下面的代码,我也无法删除客户端cookie:

<cfcookie name="GIFT CAT" value="" expires="NOW" />
<cfset StructDelete(cookie, 'GIFTCAT', false)>

2 个答案:

答案 0 :(得分:2)

您需要确保所有属性与设置的Cookie相同。如此安全,领域和路径。

<cfcookie name="test1" value="1" domain="test.com" />
<cfcookie name="test1" value="" expires="now" />

不起作用,但

<cfcookie name="test1" value="1" domain="test.com" />
<cfcookie name="test1" value="" domain="test.com" expires="now" />

确实有效。

答案 1 :(得分:2)

(扩展自评论)

听起来您正在错误地测试Cookie状态。您无法在单个http请求中执行此操作。必须将http响应发送回浏览器才能实际删除客户端cookie。该更改将反映在 next http请求中。

  

当我保留转储以查看结果显示空字符串

另外,如果您查看ColdFusion文档,它会指出expire="now" 不会从活动页面的Cookie范围中删除相应的变量。因此,如果删除cookie,然后将cookie范围转储到同一页面,则删除的cookie仍然存在。在您的情况下,value将是一个空字符串。

正确测试行为需要三个请求:

  1. 创建Cookie: <cfcookie name="GIFT_CAT" value="Created cookie at #now()#"/>。在浏览器中运行脚本后,“GIFT_CAT”:

    • 存在于CF cookie范围
    • 存在于浏览器cookie中<
  2. 删除Cookie:<cfcookie name="GIFT_CAT" value="" expires="NOW" />。在浏览器中运行脚本后,“GIFT_CAT”:

    • 仍然存在于CF cookie范围内(因为expire未在活动页面上删除它)
    • 浏览器cookie中不存在(因为浏览器在收到响应后删除了cookie)

  3. 最后,验证Cookie:<cfdump var="#COOKIE#">。在浏览器中运行脚本后,“GIFT_CAT”:

    • CF cookie范围
    • 中不存在
    • 浏览器Cookie中不存在