从控制器中删除Cookie

Dex*_*Dex 29 cookies ruby-on-rails

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

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

编辑

这很奇怪,因为我正在查看响应标头,它们似乎正在删除cookie.也许是因为它是302请求?

Set-Cookie: my_key=; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT
Run Code Online (Sandbox Code Playgroud)

Rub*_*ist 38

例如,您的cookie看起来像这样

cookies[:foo] = {:value => 'bar', :domain => '.text.com'}
Run Code Online (Sandbox Code Playgroud)

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

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

请注意,域名丢失了.试过这种方式

cookies.delete:foo,:domain =>'.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
Run Code Online (Sandbox Code Playgroud)


Obr*_*ios 14

根据rails api,现在有一个删除方法,所以如果你还没有设置域使用

cookies.delete :my_key
Run Code Online (Sandbox Code Playgroud)

如果你设置了域名

cookies.delete :my_key, domain: 'mydomain.com'
Run Code Online (Sandbox Code Playgroud)