Как извлечь файлы cookie httponly из UWP WebView? - PullRequest
0 голосов
/ 11 февраля 2019

Я знаю, что существуют методы для получения файлов cookie WebView через HttpBaseProtocolFilter.CookieManager, который совместно используется WebView и HttpClient, по крайней мере, в пределах границ одних и тех же приложений.Однако он не дает доступа к файлам cookie httponly.Файлы cookie httponly также не передаются между WebView и HttpClient.Честно говоря, я понимаю ограничения, но прежде чем сдаться, я хотел бы спросить, решил ли кто-нибудь эту проблему?

Это то, что мне нужно.У нас есть веб-сайт, написанный на Java.Сайт генерирует файл cookie JSESSION httponly и передает его клиенту.Мы работаем над приложением UWP, в котором мы создаем экземпляр WebView, который играет роль клиента.Затем мы вводим JavaScript для связи между кодом UWP и отображаемой страницей.Все работает отлично, как и ожидалось.Теперь нам нужно сделать несколько запросов из кода UWP, но в контексте текущего сеанса.Для этого нам нужно использовать тот же JSESSION для HttpClient в UWP, но я не могу найти способ сделать это.

Каждый раз, когда я отправляю запрос из UWP, генерируется новый JSESSION, и это мешает логикеработать правильно.Итак, есть ли способ извлечь этот файл cookie httponly из WebView или заменить его тем, который назначен HttpClient?

1 Ответ

0 голосов
/ 12 февраля 2019

Если вы используете Windows.Web.Http.HttpClient и WebView в UWP, файлы cookie автоматически передаются через контекст приложения между HttpClient и WebView, включая файлы cookie HttpOnly.

Для проверки я использовал код c #в этом документе для создания файла cookie HttpOnly при загрузке веб-страницы asp.net.Затем я создал приложение UWP и добавил страницу WebView на XAML для просмотра веб-сайта. В кодовом коде я использовал следующий код для получения файла cookie:

HttpBaseProtocolFilter filter = new HttpBaseProtocolFilter();
HttpCookieCollection cookieCollection = filter.CookieManager.GetCookies(new Uri("http://localhost:xxxxx/Default.aspx"));
foreach (var cookie in cookieCollection)
{
    Debug.WriteLine(cookie.Name+": "+cookie.Value+" HttpOnly: "+cookie.HttpOnly);
}

Вы могли видеть скриншот.Я могу получить печенье HttpOnly:

enter image description here

...