كيف يمكنك حذف ملفات تعريف الارتباط الخاصة بالبطاقات البرية في ريلز؟

StackOverflow https://stackoverflow.com/questions/52917

  •  09-06-2019
  •  | 
  •  

سؤال

كيف يمكنك حذف ملف تعريف الارتباط في Rails الذي تم تعيينه باستخدام نطاق Wild Card:

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

متى، بعد مستندات, ، أنت تفعل:

cookies.delete :foo

تقول السجلات

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

لاحظ أن المجال مفقود (يبدو أنه يستخدم المعلمات الافتراضية لكل شيء).احترام RFC ، بالطبع لا يزال ملف تعريف الارتباط هناك ، متصفح -> كنترول/كمد-ل ->

javascript:alert(document.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

كما ترون، فهو يقوم فقط بتعيين ملف تعريف ارتباط فارغ بالاسم الذي قدمته، والذي تم ضبطه على انتهاء صلاحيته في عام 1969، وبدون محتويات.ولكنه يتم دمجه في أي خيارات أخرى تقدمها، لذا يمكنك القيام بما يلي:

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

وأنت جاهز.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top