سؤال

أنا متأكد من أنني يجب أن تفعل شيئا خاطئا.ولكن لا حياة لي معرفة ما يجري.

لدي مشكلة حيث يبدو أن فئة HttpWebRequest في إطار غير صحيح تحليل ملفات تعريف الارتباط من موقع ويب استجابة.

أنا باستخدام العابث لمعرفة ما يجري و بعد تقديم طلب رؤوس الاستجابة تبدو على هذا النحو:

HTTP/1.1 200 Ok
Connection: close
Date: Wed, 14 Jan 2009 18:20:31 GMT
Server: Microsoft-IIS/6.0
P3P: policyref="/w3c/p3p.xml", CP="CAO DSP IND COR ADM CONo CUR CUSi DEV PSA PSD DELi OUR COM NAV PHY ONL PUR UNI"
Set-Cookie: user=v.5,0,EX01E508801E$97$2E401000t$1BV6$A1$EC$104$A1$EC$104$A1$EC$104$21O001000$1E31!90$7CP$AE$3F$F3$D8$19o$BC$1Cd$23; Domain=.thedomain.com; path=/
Set-Cookie: minfo=v.4,EX019ECD28D6k$A3$CA$0C$CE$A2$D6$AD$D4!2$8A$EF$E8n$91$96$E1$D7$C8$0F$98$AA$ED$DC$40V$AB$9C$C1$9CF$C9$C1zIF$3A$93$C6$A7$DF$A1$7E$A7$A1$A8$BD$A6$94c$D5$E8$2F$F4$AF$A2$DF$80$89$BA$BBd$F6$2C$B6$A8; expires=Sunday, 31-Dec-2014 23:59:59 GMT; Domain=.thedomain.com; path=/
Set-Cookie: accttype=v.2,3,1,EX017E651B09k$A3$CA$0C$DB$A2$CB$AD$D9$8A$8C$EF$E8t$91$90$E1$DC$C89$98$AA$E0$DC$40O$A8$A4$C1$9C; expires=Sunday, 31-Dec-2014 23:59:59 GMT; Domain=.thedomain.com; path=/
Set-Cookie: tpid=v.1,20001; expires=Sunday, 31-Dec-2014 23:59:59 GMT; Domain=.thedomain.com; path=/
Set-Cookie: MC1=GUID=541977e04a341a2a4f4cdaaf49615487; expires=Sunday, 31-Dec-2014 23:59:59 GMT; Domain=.thedomain.com; path=/
Set-Cookie: linfo=v.4,EQC|0|0|255|1|0||||||||0|0|0||0|0|0|-1|-1; expires=Sunday, 31-Dec-2014 23:59:59 GMT; Domain=.thedomain.com; path=/
Set-Cookie: group=v.1,0; expires=Sunday, 31-Dec-2014 23:59:59 GMT; Domain=.thedomain.com; path=/
Content-Type: text/html

ولكن عندما ننظر إلى الاستجابة.ملفات تعريف الارتباط ، أرى الآن أكثر من ملفات تعريف الارتباط التي أنا أتوقع مع قيم مختلفة من ملفات تعريف الارتباط التي انقسمت إلى عدة ملفات تعريف الارتباط.

يدويا الحصول على رؤوس يبدو أن النتيجة في أكثر wierdness

على سبيل المثال:رمز

foreach(string cookie in response.Headers.GetValues("Set-Cookie"))
{
    Console.WriteLine("Cookie found: " + cookie);
}

تنتج الإخراج:

Cookie found: user=v.5
Cookie found: 0
Cookie found: EX01E508801E$97$2E401000t$1BV6$A1$EC$104$A1$EC$104$A1$EC$104$21O00
1000$1E31!90$7CP$AE$3F$F3$D8$19o$BC$1Cd$23; Domain=.thedomain.com; path=/
Cookie found: minfo=v.4
Cookie found: EX019ECD28D6k$A3$CA$0C$CE$A2$D6$AD$D4!2$8A$EF$E8n$91$96$E1$D7$C8$0
F$98$AA$ED$DC$40V$AB$9C$C1$9CF$C9$C1zIF$3A$93$C6$A7$DF$A1$7E$A7$A1$A8$BD$A6$94c$
D5$E8$2F$F4$AF$A2$DF$80$89$BA$BBd$F6$2C$B6$A8; expires=Sunday
Cookie found: 31-Dec-2014 23:59:59 GMT; Domain=.thedomain.com; path=/
Cookie found: accttype=v.2
Cookie found: 3
Cookie found: 1
Cookie found: EX017E651B09k$A3$CA$0C$DB$A2$CB$AD$D9$8A$8C$EF$E8t$91$90$E1$DC$C89
$98$AA$E0$DC$40O$A8$A4$C1$9C; expires=Sunday
Cookie found: 31-Dec-2014 23:59:59 GMT; Domain=.thedomain.com; path=/
Cookie found: tpid=v.1
Cookie found: 20001; expires=Sunday
Cookie found: 31-Dec-2014 23:59:59 GMT; Domain=.thedomain.com; path=/
Cookie found: MC1=GUID=541977e04a341a2a4f4cdaaf49615487; expires=Sunday
Cookie found: 31-Dec-2014 23:59:59 GMT; Domain=.thedomain.com; path=/
Cookie found: linfo=v.4
Cookie found: EQC|0|0|255|1|0||||||||0|0|0||0|0|0|-1|-1; expires=Sunday
Cookie found: 31-Dec-2014 23:59:59 GMT; Domain=.thedomain.com; path=/
Cookie found: group=v.1
Cookie found: 0; expires=Sunday
Cookie found: 31-Dec-2014 23:59:59 GMT; Domain=.thedomain.com; path=/

كما ترون - أول كوكي في قائمة الخام الرد:

  1. تعيين ملف تعريف الارتباط:المستخدم=v. 5,0,EX01E508801

هو الحصول على تقسيمها إلى:

  1. كوكي وجدت:المستخدم=v. 5
  2. كوكي وجدت:0
  3. كوكي وجدت:EX01E508801E$..........

إذا ما الذي يحدث هنا ؟

  • هل أنا مخطئ ؟
  • هي فئة HttpWebRequest بشكل غير صحيح تحليل http ؟
  • هو خادم أنه بصق طلبات إنتاج غير صالحة http ؟
هل كانت مفيدة؟

المحلول

الفواصل في كوكي القيم التي ينبغي تجنبها - قد تحتاج إلى ترميز بشكل مختلف.

الأصلي netscape المواصفات ملفات تعريف الارتباط كانت غامضة قليلا بشأن هذه المسألة ، مشيرا

NAME=القيمة :هذه السلسلة هي سلسلة من الأحرف باستثناء منقوطة أو فاصلة و المساحة البيضاء.إذا كان هناك حاجة إلى ضع هذه البيانات في الاسم أو القيمة ، بعض طريقة ترميز مثل نمط عنوان URL %XX ترميز الموصى بها ، على الرغم من عدم الترميز المحدد أو المطلوب.

الموصى بها ، ولكن ليس مطلوب!

نصائح أخرى

يبدو أن يرسل الخادم غير صحيحة كوكي القيم.IMHO الفواصل لا يسمح في كوكي القيم.فإنها تحتاج إلى أن تكون مشفرة مع %2C.

قد تحتاج إلى استخدام عدد صحيح الزائد من GetValues(ط) ؛ يجب أن نعود فقط 7 سلاسل ثم

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