当我访问某个页面时,我试图删除客户端 cookie。我该怎么做?即使使用下面的代码,我也无法删除客户端 cookie:
<cfcookie name="GIFT CAT" value="" expires="NOW" />
<cfset StructDelete(cookie, 'GIFTCAT', false)>
当我访问某个页面时,我试图删除客户端 cookie。我该怎么做?即使使用下面的代码,我也无法删除客户端 cookie:
<cfcookie name="GIFT CAT" value="" expires="NOW" />
<cfset StructDelete(cookie, 'GIFTCAT', false)>
您需要确保所有属性都与设置的 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" />
确实有效。
(从评论扩展)
听起来您正在错误地测试 cookie 状态。您不能在单个 http 请求中执行此操作。必须将 http 响应发送回浏览器才能真正删除客户端 cookie。该更改将反映在下一个http 请求中。
当我保留转储以查看显示空字符串的结果时
此外,如果您查看 ColdFusion 文档,它指出expire="now"
不会从活动页面的 Cookie 范围中删除相应的变量)。因此,如果您删除一个 cookie,然后cookie
在同一页面上转储范围,则删除的 cookie 仍然存在。在您的情况下,这value
将是一个空字符串。
正确测试行为需要三个请求:
创建 cookie
<cfcookie name="GIFT_CAT" value="Created cookie at #now()#"/>
:. 在浏览器中运行脚本后,“GIFT_CAT”:
cookie
范围内删除 cookie <cfcookie name="GIFT_CAT" value="" expires="NOW" />
:。在浏览器中运行脚本后,“GIFT_CAT”:
cookie
范围内(因为expire
没有在活动页面上删除它)最后,验证 cookie <cfdump var="#COOKIE#">
:. 在浏览器中运行脚本后,“GIFT_CAT”:
cookie
范围内