سؤال

هل يمكن لأي شخص أن يوجهني إلى كود مصدر Firefox حيث يتم تحليل رأس Set-Cookie؟أريد أن أفهم السلوك الدقيق.

اقرأ المزيد إذا كنت تريد معرفة السبب؟بالنسبة للقيود المختلفة في تطبيقي، أحتاج إلى تمرير ملفات تعريف ارتباط متعددة داخل رأس Set-Cookie واحد.RFC-2109 يذكر بوضوح،

"يشتمل رأس استجابة Set-Cookie على الرمز المميز Set-Cookie:، متبوعًا بقائمة مفصولة بفواصل لملف تعريف ارتباط واحد أو أكثر.يبدأ كل ملف تعريف ارتباط بزوج NAME=VALUE، متبوعًا بصفر أو أكثر من أزواج قيمة السمات المفصولة بفواصل منقوطة."

لذلك يجب أن أكون قادرًا على تمرير رأس Set-Cookie التالي

ملف تعريف الارتباط المحدد:name1=value1;attr11=attrval11;attr12=attrval12,name2=value2;attr21=attrval21;attr22=attrval22;

لا يعمل.ومع ذلك، ما يلي لا يعمل

ملف تعريف الارتباط المحدد:name1=value1, name2=value2;attr1=attrval1;attr2=attrval2;

وأريد إعطاء سمات مختلفة لملفات تعريف الارتباط المختلفة.

[تحديث]

أمثلة حقيقية:

مثال 1-

ملف تعريف الارتباط المحدد:cookie1=value1;المسار=/,cookie2=value2;المسار=/

في هذه الحالة، يوزع فايرفوكس ملف تعريف الارتباط الأول ويخرج منه ملف تعريف الارتباط (اسمه "ملف تعريف الارتباط 1" وقيمته "قيمة 1") (يتم تجاهل ملف تعريف الارتباط الثاني تمامًا)

مثال رقم 2-

ملف تعريف الارتباط المحدد:cookie1=value1,cookie2=value2;المسار=/

في هذه الحالة يعتقد فايرفوكس أن هناك ملف تعريف ارتباط واحد اسمه "cookie1" وقيمته هي "value1,cookie2=value2".وهذا، مرة أخرى، ليس ما كان مقصوداً.

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

المحلول

نزهة سريعة من خلال MXR يشير إلى المنطق الرئيسي في nsCookieService::SetCookieInternal.يمكنك اتباع الروابط ذهابًا وإيابًا حسب الحاجة.فيما يتعلق بمشكلتك الفعلية، قد يكون من المفيد أن تعطي مثالًا حقيقيًا للرأس.

نصائح أخرى

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

giveacodicetagpre.

على الرغم من أن هناك أي سبب يدويا رؤوسه يدويا إلى الاستجابة بدلا من استخدام أي إطار عملك (PHP و ASP.NET و ROR، ETC) يوفر؟

حسنا، قراءة من التعليمات البرمجية المصدر من الواضح أن فايرفوكس لا ينفذ RFC-2109 في هذا الصدد ويستخدم CR أو LF بدلا من "،" فاصل ملف تعريف الارتباط (خط الإشعار رقم 1934، 1959، 1990 في http://mxr.mozilla.org/mozilla-central/source/netwerk/comie/nscookieservice.cpp ).حاولت كل من Firefox v3.6.6، CR يعمل ولكن LF ليس كذلك.

الخلاصة: على فايرفوكس، يمكنني استخدام CR بدلا من "،" لفصل ملفات تعريف الارتباط.

خلل: لا شيء خارج (CR، LF، "،") يعملون على Internet-Explorer.الآن يمكن لشخص ما أن يشيرني إلى رمز "مصدر" ل IE حيث أستطيع أن أرى ما يستخدمونه كفاصل كوكي: -)

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