Не удается установить заголовки в запросе при навигации по WebView.CoreWebView2

#c# #asp.net #winforms #microsoft-edge #webview2

Вопрос:

     Namespace: Microsoft.Web.WebView2.WinForms
    Assembly:  Microsoft.Web.WebView2.WinForms.dll
    Package:   Microsoft.Web.WebView2 v1.0.902.49 
 

Назначение некоторого пути к локальной папке для создания среды webView2

     string userDataFolder = Path.GetTempPath()   @"NETWebView2UserDataTest";

    CoreWebView2EnvironmentOptions options = new CoreWebView2EnvironmentOptions();

 async void InitwebView()
        {
                CoreWebView2Environment env = CoreWebView2Environment.CreateAsync("", userDataFolder, options).GetAwaiter().GetResult();
                await webView.EnsureCoreWebView2Async(env);
                webView.CoreWebView2InitializationCompleted  = WebView_CoreWebView2Ready;
        }

 private void WebView_CoreWebView2Ready(object sender, EventArgs e)
        {
            webView.CoreWebView2.AddWebResourceRequestedFilter("*", CoreWebView2WebResourceContext.All);
            webView.CoreWebView2.WebResourceRequested  = CoreWebView2_WebResourceRequested;
        }
        
 

Он переходит по URL-адресу, но заголовки не настраиваются для запроса

 private void CoreWebView2_WebResourceRequested(object sender, CoreWebView2WebResourceRequestedEventArgs e)
        {
            // Set and access the header
            e.Request.Headers.SetHeader("test","username")
             webView.CoreWebView2.Navigate(webView.Source.ToString());
       }
 

Комментарии:

1. Когда вы звоните webView.CoreWebView2.Navigate , вы создаете новый запрос, а не используете тот, который вы только что изменили.

2. Могу я узнать, есть ли у вас возможность проверить мой ответ? Я рад помочь, если у вас есть еще какие-либо вопросы.

Ответ №1:

Согласно той части кода, которую вы предоставили, я думаю, что вы установили свойство источника для элемента WebView2 управления, и @Poul Bak уже упомянул причину вашей проблемы.

В этом случае вы можете попытаться задать атрибуты и значение для заголовка в событии NavigationCompleted.

Простой тест(тест с помощью Google):

 async void InitwebView()
        {
            await webView.EnsureCoreWebView2Async(default);
            webView.Source = new Uri("https://www.google.com/");
            webView.NavigationCompleted  = WebView2Control_CoreWebView2Ready;
        }

private void WebView2Control_CoreWebView2Ready(object sender, EventArgs e)
        {
            webView.CoreWebView2.AddWebResourceRequestedFilter("*", CoreWebView2WebResourceContext.All);
            webView.CoreWebView2.WebResourceRequested  = CoreWebView2_WebResourceRequested;
        }

private void CoreWebView2_WebResourceRequested(object sender, CoreWebView2WebResourceRequestedEventArgs e)
        {
            e.Request.Headers.SetHeader("test", "username");
            //webView.CoreWebView2.Navigate(webView.CoreWebView2.Source);
        }
 

Результат:введите описание изображения здесь