هل من الممكن حذف ملفات تعريف الارتباط للنطاق الفرعي؟

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

  •  02-07-2019
  •  | 
  •  

سؤال

إذا كان هناك ملف تعريف ارتباط تم تعيينه لنطاق فرعي، metric.foo.com، فهل هناك طريقة لحذف ملف تعريف الارتباط metric.foo.com بناءً على طلب إلى www.foo.com؟يبدو أن المتصفح (على الأقل Firefox) يتجاهل ملف تعريف الارتباط Set-Cookie بمجال metric.foo.com.

هل كانت مفيدة؟

المحلول

ملفات تعريف الارتباط قابلة للقراءة فقط من خلال النطاق الذي أنشأها، لذا إذا تم إنشاء ملف تعريف الارتباط على metric.foo.com، فيجب حذفه ضمن نفس النطاق الذي تم إنشاؤه فيه.وهذا يشمل المجالات الفرعية.

إذا طُلب منك حذف ملف تعريف الارتباط من metric.foo.com، ولكنك تقوم حاليًا بتشغيل صفحة على www.foo.com، فلن تتمكن من القيام بذلك.

للقيام بذلك، تحتاج إلى تحميل الصفحة من metric.foo.com، أو إنشاء ملف تعريف الارتباط ضمن foo.com بحيث يمكن الوصول إليها ضمن أي نطاق فرعي.أو استخدم هذا:

Response.cookies("mycookie").domain = ".foo.com"

...أثناء إنشائه، وقبل حذفه.

.. لم تختبر - يجب أن تعمل.

نصائح أخرى

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

void DeleteSubdomainCookie(HttpResponse response, string name)
{
    HttpCookie cookie = new HttpCookie(name);
    cookie.Expires = DateTime.Now.AddMonths(-1);
    cookie.Domain = ".yourdomain.com";
    response.Cookies.Add(cookie);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top