Вопрос

Как удалить файл 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'

И все готово.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top