最近cookieに悩まされたので。
var webReq = (HttpWebRequest)WebRequest.Create("http://www.aaa.co.jp");
var webRes = (HttpWebResponse)webReq.GetResponse();
という形で、レスポンスを取得するのはよくあるのだが
レスポンスが正しくセットされないことがたまにある。
原因として、以下の2点があるようである。
1.cookieのvalue にカンマが含まれている
例)HttpHeaderの一部
Set-Cookie : cookieA=a,b,c,d,e
<レスポンスにセットされるcookie>
・cookieA = a
※b,c,d,eが読み捨てられる。
bとcとdとeというcookieが存在すると解析されている?
2.cookieのvalue にカンマが連続で含まれる
例)HttpHeaderの一部
Set-Cookie : cookieA=a,b,c,d,e
Set-Cookie : cookieB=a,,,c,d,e
Set-Cookie : cookieC=CCC
<レスポンスにセットされるcookie>
・cookieA = a
・cookieB = a
※cookieC自体がセットされない。
少なくともこのような傾向がある。
解決方法としては、レスポンス取得後、HttpHeaderからcookieを取得して
正規表現でどうにかして、cookieとその値を確実に取得して
レスポンスのcookieに書き込んであげるしかない。
その辺りは、サイトによると思うので、割愛。
cookieにカンマが含まれていると危険だ。
でもcookieの値にカンマが含まれているサイトって多いのか疑問である。。。