質問

間違ったことをしているに違いない。しかし、私の人生では何が起こっているのか理解できません。

フレームワークのHttpWebRequestクラスがWeb応答からのCookieを正しく解析していないように見える問題があります。

私はFiddlerを使用して何が起こっているかを確認していますが、リクエストを行った後、レスポンスのヘッダーは次のように見えます:

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
foreach(string cookie in response.Headers.GetValues("Set-Cookie"))
{
    Console.WriteLine("Cookie found: " + cookie);
}
C$CE$A2$D6$AD$D4!2$8A$EF$E8n$91$96$E1$D7$C8
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<*>C$CE$A2$D6$AD$D4!2$8A$EF$E8n$91$96$E1$D7$C8<*>
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<*>C$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=/
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, 31-Dec-2014 23:59:59 GMT; Domain=.thedomain.com; path=/ Set-Cookie: accttype=v.2,3,1,EX017E651B09k$A3$CA<*>C$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

しかし、レスポンスを見ると、Cookiesには、異なるCookieの値が異なるCookieに分割されていると思われるはるかに多くのCookieが表示されます。

ヘッダーを手動で取得すると、より奇妙になります

eg:コード

<*>

出力を生成します:

<*>

ご覧のとおり-リストの生の応答の最初のCookie:

  1. Set-Cookie:user = v.5,0、EX01E508801

に分割されています:

  1. Cookieが見つかりました:user = v.5
  2. 見つかったCookie:0
  3. Cookieが見つかりました:EX01E508801E $ ..........

では-ここで何が起きているのですか?

  • 私は間違っていますか
  • HttpWebRequestクラスはhttpヘッダーを誤って解析していますか?
  • 無効なhttpヘッダーを生成するリクエストを吐き出すのはウェブサーバーですか?
役に立ちましたか?

解決

Cookie値のコンマは避ける必要があります-異なる方法でエンコードする必要がある場合があります。

元の netscape仕様は、この問題については少しあいまいでした、記載

  

NAME = VALUE:       この文字列は、セミコロン、コンマを除く一連の文字です   および空白。する必要がある場合   そのようなデータを名前または値に入れ、   URLスタイルなどのエンコード方法   %XXエンコードが推奨されますが、   エンコードが定義または必須です。

推奨されているが、必須ではない

他のヒント

サーバーが誤ったCookie値を送信しているようです。 Cookieの値にIMHOコンマは使用できません。 %2Cでエンコードする必要があります。

GetValues(i)の整数オーバーロードを使用することもできます。 7つの文字列のみを取得する必要があります

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top