Как удалить файлы cookie wild card в Rails?
-
09-06-2019 - |
Вопрос
Как удалить файл cookie в rails, который был установлен с использованием домена с подстановочной картой:
cookies[:foo] = {:value => 'bar', :domain => '.acme.com'}
Когда, следуя Документы, ты делаешь:
cookies.delete :foo
в журналах говорится
Cookie set: foo=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT
Обратите внимание, что домен отсутствует (похоже, он использует параметры по умолчанию для всего).Уважая RFC, конечно, файл cookie все еще там Браузер -> ctrl/cmd-L ->
javascript:alert(document.cookie);
Voilà!
Q:Каков "правильный" способ удалить такой файл cookie?
Решение
Также передайте домен : на удаление.Вот источник этого метода:
# 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
Как вы можете видеть, он просто устанавливает пустой файл cookie с указанным вами именем, срок действия которого истекает в 1969 году, и без содержимого.Но это сливается с любыми другими опциями, которые вы предоставляете, так что вы можете сделать:
cookies.delete :foo, :domain => '.acme.com'
И все готово.
Не связан с StackOverflow