Редактировать заголовок HTTP-запроса с помощью WebView2 - PullRequest
1 голос
/ 29 мая 2020

Я использую новый элемент управления WebView2, который недавно был выпущен для. NET, и мне нужно добавить значение авторизации в заголовок запроса при переходе на сайт, но я не могу найти способ сделать это. Поскольку это элемент управления относительно новый и я использую его впервые, я также мог полностью упустить метод, который на самом деле это делает.

Единственная информация, которую я могу найти до сих пор, находится в документации по C ++: ICoreWebView2HttpRequestHeaders

В нем конкретно указано

Используется для проверки HTTP-запроса на событие WebResourceRequested и событие NavigationStarting. Обратите внимание: вы можете изменять заголовки HTTP-запроса из события WebResourceRequested, но не из события NavigationStarting.

Это событие доступно в NET, и я могу поймать его и увидеть заголовки запроса, но они не кажутся редактируемыми или, по крайней мере, я пытаюсь редактировать их неправильно. После того, как я попытаюсь отредактировать заголовок, свойство авторизации по-прежнему имеет значение null и не передается с запросом.

private void CoreWebView2_WebResourceRequested(object sender, Microsoft.Web.WebView2.Core.CoreWebView2WebResourceRequestedEventArgs e)
{
    var authHeaderValue = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "the_token_value");
    e.Request.Headers.Authorization = authHeaderValue;
}

Каков правильный способ, если есть способ, установить это значение, как вы не может напрямую изменять аргументы событий. Также очень вероятно, что я мог неправильно использовать это событие.

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 24 июня 2020

Причина в том, что событие WebResourceRequested имеет различные проблемы, которые Microsoft надеется исправить, а также сообщается о невозможности изменить заголовки (см. Ниже).

Например:

Невозможно установить заголовки в обработчике событий WebResourceRequested (это та же ссылка, что и в ответе Ni c)

Ошибка установки ответа в событии WebResourceRequested

Невозможно установить заголовки или файлы cookie в событии WebResourceRequested. Ошибка

, что также частично упоминается здесь: Поддержка получения и настройки файлов cookie в элементе управления WebView2

Итак, в заключение, вы правильно написали код, но вы не сможете установить заголовок авторизации из WebResourceRequested, пока он не будет исправлен Microsoft.

Я ценю, что в этом ответе нет ' Я не могу предложить решение, но я надеюсь, что он, по крайней мере, ответит на вопрос, почему код в настоящее время не работает.

0 голосов
/ 20 июня 2020

Это известная ошибка в WebView2, над которой в настоящее время работают: https://github.com/MicrosoftEdge/WebViewFeedback/issues/259

Если вы обнаружите больше подобных ошибок в будущем, не стесняйтесь открывать проблемы в репозитории отзывов: https://github.com/MicrosoftEdge/WebViewFeedback/issues

Спасибо!

...