Можно ли сделать WebBrowser control share cookies с HttpWebRequest?


Есть ли способ, чтобы сделать элемент управления WebBrowser в C#.NET и просьб класса HttpWebRequest совместно использовать файлы cookie?

Например, если запрос выполняется программно с помощью HttpWebRequest, а затем HttpWebResponse устанавливает файл cookie, есть ли способ убедиться, что он также установлен в элементе управления WebBrowser?

И аналогично, если пользователь переходит с помощью элемента управления WebBrowser и установлен файл cookie, есть ли способ гарантировать, что CookieContainer для HttpWebRequest также является обновлено?

Спасибо за любую помощь!

2 6

2 ответа:

Вам потребуется синхронизировать файлы cookie вручную с помощью API InternetSetCookieEx / InternetGetCookieEx, и для этого потребуется знать все URL-адреса всех субдаунов, используемых рассматриваемой страницей.

Вам также необходимо передать флаг INTERNET_COOKIE_HTTPONLY, чтобы убедиться, что файлы cookie HTTPONLY видны вашему приложению.

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myUri);
request.CookieContainer = new CookieContainer();
request.CookieContainer.SetCookies(myUri, webBrowser1.Document.Cookie);

(Источник )

И наоборот (я не уверен):

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myUri);
//request.CookieContainer = new CookieContainer();
request.GetResponse();
webBrowser1.Document.Cookie = request.CookieContainer.GetCookies(myUri);