从控制器中删除Cookies

从控制器中删除Cookies

问题描述:

我使用jQuery在我的表单中设置了一些cookie值。我可以通过cookies方法在Rails控制器中读取它们。当我打电话给cookies.delete(:my_key)时,当我再次拨打cookies时,它们似乎不见了。但是当我重新加载页面时,cookies又回来了。从控制器中删除Cookies

有没有办法从我的控制器中删除好的cookie?

编辑

这是很奇怪的,因为我期待在响应头,他们似乎被删除的cookie。也许这是因为它是一个302请求?

Set-Cookie: my_key=; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT 

试试这个。 例如,你的饼干看起来像这样

cookies[:foo] = {:value => 'bar', :domain => '.text.com'} 

你尝试过这个=>cookies.delete :foo

日志会说=>Cookie set: foo=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT

注意域缺失。试过这种方式

cookies.delete:FOO,:域名=> '.text.com'

功能=>

# Removes the cookie on the client machine by setting the value to an empty string 
# and setting its expiration date into the past. Like []=, you can pass in an options 
# hash to delete cookies with extra data such as a +path+. 
def delete(name, options = {}) 
    options.stringify_keys! 
    set_cookie(options.merge("name" => name.to_s, "value" => "", "expires" => Time.at(0))) 
end 

一切顺利!

+0

我似乎不太记得与基于Rack的框架有关的一些Cookie相关问题。您的解决方案应该有效,希望自去年以来有任何问题已经清理完毕。 – Dex 2012-10-21 09:42:08

+0

与此答案一致的免费信息:http://api.rubyonrails.org/classes/ActionDispatch/Cookies.html说:“请注意,如果您在设置Cookie时指定了:域,则还必须在删除时指定域cookie“ – 2016-06-16 19:42:45

按照rails api,现在有一个删除方法,因此,如果您还没有设置域名使用

cookies.delete :my_key 

,如果你有设置域

cookies.delete :my_key, domain: 'mydomain.com'