2007年4月2日 星期一

.Net CookieContainer Bug-expires=

在使用 .Net Framework提供的cookie container時,原本CookieContainer應該會將Response中的Set-Cookie填入CookieContainer,
如果Response的header中有下列資訊:
Set-Cookie: JSESSION=fsd1247fdf; path=/; domain=xxx.com;
則之後CookieContainer中應該會多了一個名稱為JSESSION,值為fsd1247fdf的Cookie,
之後繼續使用這個Cookie,在送到xxx.com/所屬的網域時,會將此cookie也送過去

但是,遇到這種下面header時,竟然會被忽略,
Set-Cookie: XXX=123; path=/; domain=xxx.com; Expires=
Expires意義為期限,因其為空,所以CookieContainer不會將它加入
但真正瀏覽器的動作,又會使用這個Cookie,造成動作不相符的問題

碰到這樣的問題,小弟只好手動自行加入,
用regexp分解Set-Cookie部份,再填入CookieContainer中,
Request.CookieContainer.Add(new Cookie("XXX", "123", "/", ".xxx.com"));
其中domain的部份要在其前面加上一個點
這樣這個Cookie才能生效

0 回應:

 
TEMPLATE HACKS AND TWEAKS BY [ METAMUSE ] BLACKCAT 1.1