2008-09-09 32 views
13

Làm thế nào để bạn xóa một cookie trong đường ray đã được thiết lập với một miền thẻ hoang dã:Làm cách nào để xóa cookie thẻ hoang dã trong Rails?

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

Khi nào, sau khi docs, bạn làm:

cookies.delete :foo 

các bản ghi nói

Cookie set: foo=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT 

Lưu ý rằng miền bị thiếu (có vẻ như sử dụng các thông số mặc định mặc định cho mọi thứ). Tôn trọng RFC, tất nhiên của vẫn còn đó, cookie của trình duyệt ->ctrl/cmd - L ->

javascript:alert(document.cookie); 

Voila!

Hỏi: Cách "đúng" để xóa cookie như thế nào?

+0

Thx! hoạt động như một sự quyến rũ ... tôi cũng đã cố gắng thêm liên kết http://api.rubyonrails.org/classes/ActionController/Cookies.html "tài liệu" nhưng điều đó có thể không thành công – Purfideas

Trả lời

20

Vượt qua: miền cũng sẽ bị xóa. Đây là nguồn gốc của phương pháp đó:

# 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 

Như bạn thấy, nó chỉ đặt một cookie có sản phẩm nào có tên mà bạn đã đưa ra, sẽ hết hạn vào năm 1969, và không có nội dung. Nhưng nó hợp nhất trong bất kỳ tùy chọn nào khác mà bạn cung cấp, vì vậy bạn có thể làm:

cookies.delete :foo, :domain => '.acme.com' 

Và bạn đã đặt.

Các vấn đề liên quan