Microsoft.Toolkit.Forms.UI.Controls.WebView: Как установить файлы cookie - PullRequest
2 голосов
/ 10 марта 2020

Как установить файлы cookie в Microsoft.Toolkit.Forms.UI.Controls.WebView на основе MS-Edge? Мне нужно отправить токен повара ie на веб-сайт, на который я перехожу.

Что я пробовал:

  1. Передача заголовка cook ie на Метод навигации: заголовок не будет передан на сайт (проверено Fiddler). Другие заголовки (например, «MyCustomHeader» в примере ниже) передаются на сайт.
string cookieHeader = cookieContainer.GetCookieHeader(siteUri);
var headers = new Dictionary<string, string>();
headers.Add("Cookie", "MyAuthCookie=MyAuthToken; Domain=.somesite.net; Path=/");
headers.Add("MyCustomHeader", "MyCustomHeader-Value");
_browser.Navigate(siteUri, HttpMethod.Get, headers: headers);
Установка повара ie в CookieManager перед вызовом WebView.Navigate:
var siteUri = new Uri("http://wwww.somesite.net/");
var filter = new Windows.Web.Http.Filters.HttpBaseProtocolFilter();
var cookieManager = filter.CookieManager;
var cookie = new Windows.Web.Http.HttpCookie("MyAuthCookie", siteUri.Host, "/");
cookie.Value = "MyAuthToken";
cookieManager.SetCookie(cookie);
webView.Navigate(siteUri);

Это также не работает при вызове NavigateWithHttpRequestMessage Microsoft.Toolkit.Win32.UI.Controls.Interop.WinRT. .WebViewControlHost (через отражение) вместо WebView.Navigate.

Он также не работает при запросе того же URL-адреса HttpClient перед вызовом WebView.Navigate:

using (var client = new Windows.Web.Http.HttpClient(filter) { })
{
    var result = client.GetAsync(siteUri).AsTask().Result;
    result.EnsureSuccessStatusCode();
}

webView.Navigate(siteUri);

Таким образом, повар Заголовок ie отправляется только с запросом HttpClient, но не с последующим запросом WebView.Navigate. Я предполагаю, что причиной этого может быть тот факт, что WebView работает в своем собственном процессе.

Есть ли способ передать повара ie на сайт? Обратите внимание, что повар ie не происходит с сайта. Токен аутентификации получен из другой системы и должен быть передан на веб-сайт.

...