يبدو أن عملية ملفات تعريف الارتباط عبر النطاقات تمثل مشكلة بسيطة، لأنك تحتاج فقط إلى تحديد سمة المجال كاسم المجال الجذر لموقع الويب المحدد، ومع ذلك، واجه المؤلف بعض المشكلات أثناء الاستخدام الفعلي، والتي تستحق الاهتمام بالفعل
بالبيئة
ملف تعريف الارتباط في اسم المجال الرئيسي www قم بإنشائه ضمن سمة المجال واكتبها، مثل: (لتسهيل تصحيح الأخطاء، الرموز التالية كلها رموز asp)
Write.asp
رمز البرنامج
<%
Response.Cookies(CookieName)("UserName") = "SunBird"
Response.Cookies(CookieName)("كلمة المرور") = "xyz1234"
Response.Cookies(CookieName).النطاق = "xxxx.com"
%>
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 لمسحه، كل شيء على ما يرام، ويبدو أن http://bizhi.downcodes.com/ ليس لديه مشكلة.
ولكن هناك مشاكل عند تطبيق هذه الطريقة على المواقع الفعلية.
وصف المشكلة:
كل شيء على ما يرام عند تسجيل الدخول لأول مرة. يمكن لأي اسم نطاق فرعي الوصول إلى ملفات تعريف الارتباط المخزنة في اسم النطاق الرئيسي. ومع ذلك، بمجرد تسجيل الخروج، يتم مسح ملفات تعريف الارتباط الخاصة باسم النطاق الفرعي، ولكن ملفات تعريف الارتباط الرئيسية لا يزال اسم المجال محفوظًا. يتم مسح اسم المجال الرئيسي بالقوة بعد تعيين ملف تعريف الارتباط، بغض النظر عن كيفية تسجيل الدخول إلى اسم المجال الرئيسي، لا يمكن حفظ ملف تعريف الارتباط إلا إذا قمت بإغلاق المتصفح وإعادة فتحه.
بعد عدة محاولات، اكتشفت المشكلة بالصدفة، وفيما يلي عملية الاختبار.
إنشاء صفحة Write2.asp ووضعها تحت اسم المجال الرئيسي
رمز البرنامج
<%
Response.Cookies(CookieName)("TEST_COOKIE") = "TEST_COOKIE"
%>
الخطوة 1: بعد إغلاق المتصفح، قم بالتنفيذ بالترتيب التالي: Write.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 مباشرة لإنشاء ملف تعريف ارتباط جديد.