【问题标题】:Not able to set the headers in the request when navigating through webView.CoreWebView2浏览 webView.CoreWebView2 时无法在请求中设置标头
【发布时间】:2021-08-04 11:16:51
【问题描述】:
    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());
       }

【问题讨论】:

  • 当您调用webView.CoreWebView2.Navigate 时,您正在创建一个新请求,而不是使用那个请求,您刚刚更改了。
  • 请问您是否有机会检查我的答案?如果您有任何其他问题,我很乐意为您提供帮助。

标签: c# asp.net winforms microsoft-edge webview2


【解决方案1】:

根据您提供的部分代码,我认为您已经为WebView2控件设置了源属性,@Poul Bak 已经提到了您的问题的原因。

在这种情况下,你可以尝试在NavigationCompleted event的Header中设置属性和值。

一个简单的测试(用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);
        }

结果:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    相关资源
    最近更新 更多