JQueryを使用してフォームにいくつかのCookie値を設定しました。私はRailsコントローラーでcookies
メソッドを介してコントローラーで問題なく読み取ることができます。cookies.delete(:my_key)
を呼び出すと、cookies
を再度呼び出すと、それらはなくなったように見えます。しかし、リロードするとページ、クッキーは再び戻ってきました。
コントローラ内からクッキーを完全に削除する方法はありますか?
編集
私が応答ヘッダーを見ていると、これは非常に奇妙で、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、: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
Rails api によると、削除メソッドがあるため、ドメインの使用を設定していない場合
cookies.delete :my_key
ドメインを設定した場合
cookies.delete :my_key, domain: 'mydomain.com'