تعريف
الارتباط عبر النطاقات تمثل مشكلة بسيطة، لأنك تحتاج فقط إلى تحديد سمة المجال كاسم المجال الجذر لموقع الويب المحدد،
ومع ذلك، واجه المؤلف بعض المشكلات أثناء الاستخدام الفعلي، وهو أمر يستحق الاهتمام بالفعل
ملف تعريف الارتباط في اسم المجال الرئيسي www قم بإنشائه ضمن سمة المجال واكتبها، مثل: (لتسهيل تصحيح الأخطاء، الرموز التالية كلها رموز asp)
الكود:
Write.asp
<%
Response.Cookies(CookieName)("UserName") = "SunBird"
Response.Cookies(CookieName)("كلمة المرور") = "xyz1234"
Response.Cookies(CookieName).النطاق = "xxxx.com"
%>
رمز
Read.aspلقراءة ملفات تعريف الارتباط في نفس الدليل
:Read.asp
<%
Response.Write Request.Cookies(CookieName)("اسم المستخدم")
Response.Write Request.Cookies(CookieName)("كلمة المرور")
%>
ثم قم بوضع ملف Read.asp في موقع مجال فرعي آخر، بنفس الرمز المذكور أعلاه.
وأخيرًا، نقوم بإنشاء Clear.asp آخر لمسح ملفات تعريف الارتباط ووضعه تحت اسم المجال الرئيسي
الرمز:
Clear.asp
<%.
Response.Cookies(CookieName)("اسم المستخدم") = ""
Response.Cookies(CookieName)("كلمة المرور") = ""
Response.Cookies(CookieName).النطاق = "xxxx.com"
%>
يمكنك الآن اختباره من خلال تسلسل التنفيذ التالي، Write.asp-->Read.asp لاسم المجال الرئيسي-->Read.asp لاسم المجال الفرعي يمكن لجميع صفحات Read.asp قراءة قيمة ملف تعريف الارتباط الذي تم إنشاؤه بواسطة Write.asp ثم قم بتشغيل Clear.asp مرة أخرى لمسحه، وكل شيء على ما يرام، ويبدو أنه لا توجد مشكلة.
ولكن هناك مشاكل عند تطبيق هذه الطريقة على المواقع الفعلية.
وصف المشكلة:
كل شيء على ما يرام عند تسجيل الدخول لأول مرة، يمكن لجميع أسماء النطاقات الفرعية الوصول إلى ملفات تعريف الارتباط المخزنة في اسم النطاق الرئيسي، ومع ذلك، بمجرد تسجيل الخروج، يتم مسح ملفات تعريف الارتباط الخاصة بأسماء النطاقات الفرعية، ولكن يتم مسح ملفات تعريف الارتباط الخاصة باسم النطاق الرئيسي لا تزال محفوظة. بعد مسح ملفات تعريف الارتباط لاسم النطاق الرئيسي بالقوة، بغض النظر عن كيفية تسجيل الدخول إلى اسم النطاق الرئيسي، لا يمكن حفظ ملفات تعريف الارتباط إلا إذا قمت بإغلاق المتصفح وإعادة فتحه.
بعد عدة محاولات، اكتشفت المشكلة بالصدفة، وفيما يلي عملية الاختبار.
إنشاء صفحة Write2.asp ووضعها تحت اسم المجال الرئيسي
<%
Response.Cookies(CookieName)("TEST_COOKIE") = "TEST_COOKIE"
%>
الخطوة 1: بعد إغلاق المتصفح، قم بالتنفيذ بالترتيب التالي: Write.asp-->Read.asp لاسم المجال الرئيسي-->Read.asp لاسم المجال الفرعي هنا يقرأ كل Read.asp بشكل طبيعي.
الخطوة 2: Clear.asp-->Read.asp لاسم المجال الرئيسي-->Read.asp لاسم المجال الفرعي عملية المسح ناجحة هنا.
الخطوة 3: Write.asp --> Write2.asp --> اسم المجال الرئيسي Read.asp --> اسم المجال الفرعي Read.asp عند هذه النقطة، يمكن لكل من Read.asp قراءة قيمة ملف تعريف الارتباط.
الخطوة 4: أعد تنفيذ الخطوة 2 واكتشف أن اسم المجال الرئيسي Read.asp لا يزال يقوم بإخراج القيمة، بينما تم مسح قيمة Read.asp ضمن اسم المجال الفرعي.
بناءً على الاختبار أعلاه، نلخص النقاط التالية التي تحتاج إلى الانتباه إليها عند استخدام ملفات تعريف الارتباط عبر النطاقات:
1. عندما يكون لديك مجموعة ملفات تعريف الارتباط (أو قاموس ملفات تعريف الارتباط) وتستخدم سمة المجال لتحديد اسم المجال، عندما تعديل أو إضافة أعضاء جدد إلى المجموعة عند الإضافة، تأكد من إضافة السمة Resonse.Cookies(CookieName).Domain بعد العملية.
2. إذا لم يكن ذلك ضروريًا، فيرجى عدم تعديل مجموعة ملفات تعريف الارتباط التي تم تعيين المجال لها، واستخدام Response.Cookies("CookieText") = CookieValue مباشرة لإنشاء ملف تعريف ارتباط جديد.