Getting a list of cookies set using WatiN

只谈情不闲聊 提交于 2019-12-24 00:37:15

问题


Is there a way to get a list of all the cookies set by a website using WatiN?

The IE Browser class in WatiN provides a GetCookie method that allows you to retrieve a specific cookie, but I would like to iterate over all the cookies that have been set.

There are two methods that should allow you to get the cookies:

CookieCollection cookies = _browser.GetCookiesForUrl(new Uri(url));

and

CookieContainer cookies = _browser.GetCookieContainerForUrl(new Uri(url));

But both of these are empty. Also calling the GetCookie method for a specific cookie returns null.

Any suggestions of how to get this to work?


回答1:


Well, I suppose those methods should work as expected, but maybe you are trying to get HttpOnly cookies? Many sites/web frameworks sets this flag for important cookies, especially when it comes to "session id" cookies. You can't read them in WatiN and it's really hard to read them at all. I was looking for solution once and only one I got was article: Retrieve HttpOnly Session Cookie in WebBrowser

If you want to know if the site you are trying to get cookies is setting HttpOnly flag on the cookie, use Fiddler2 and look in response headers.




回答2:


Recently I had to deal with this situation. At first I thought the cookies I was looking for were HttpOnly, but I took a look using WireShark and there was no HttpOnly flag.

Not sure why GetCookieContainerForUrl fails in this case, but a client side script call revealed the cookies were still there:

ie.Eval("document.cookie");

You might want to try that statement before resorting to packet sniffing every time.



来源:https://stackoverflow.com/questions/6137310/getting-a-list-of-cookies-set-using-watin

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!