簡體   English   中英

在 Wpf 應用程序中設置 Webview2 標頭

[英]set Webview2 header in Wpf application

我想為 Webview2 發出的所有請求設置自定義標頭。 請幫忙。 基本上我想在 webview 本身中加載網站,所以我需要在所有請求中收到我的標頭。

主窗口.xaml

<DockPanel>
    <wv2:WebView2 Name="webView"
            Source="http://localhost/serverinfo"
            CoreWebView2InitializationCompleted="webView_CoreWebView2InitializationCompleted"
            ZoomFactor="1.2"
            NavigationStarting="WebView_NavigationStarting"      
    />
</DockPanel>

主窗口.xaml.cs

using Microsoft.Web.WebView2.Core;
using System;
using System.Windows;

namespace O2C
{
    public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent();
        }

        private void webView_CoreWebView2InitializationCompleted(object sender, Microsoft.Web.WebView2.Core.CoreWebView2InitializationCompletedEventArgs e)
        {
            webView.CoreWebView2.Settings.UserAgent = "O2C-Web";
            webView.CoreWebView2.Settings.AreDefaultContextMenusEnabled = false;
            webView.CoreWebView2.Settings.AreBrowserAcceleratorKeysEnabled = false;
        }

        private void WebView_NavigationStarting(object sender, CoreWebView2NavigationStartingEventArgs e)
        {
            e.RequestHeaders.SetHeader("X-Authorization", "My Auth");
        }
    }
}
e.RequestHeaders.SetHeader("X-Authorization", "My Auth");

上面一行是正確的,但事件不正確,因為如果存在新 URL,它會起作用,但如果存在相同的 URL,則它不起作用。

我找到了可以滿足要求的正確事件,但我不知道如何從 xaml 文件或 .cs 文件中調用該事件。 以下文檔說該事件將滿足要求。

https://docs.microsoft.com/en-us/dotnet/api/microsoft.web.webview2.core.corewebview2.webresourcerequested?view=webview2-dotnet-1.0.864.35

但是如何掛鈎該事件以及從哪里我不知道。

該事件 WebResourceRequested 在 CoreWebView2 類上,您可以在 WebView2.CoreWebView2InitializationCompleted 事件觸發后,在 WebView2 類上找到作為屬性的 CoreWebView2。

        private void webView_CoreWebView2InitializationCompleted(object sender, Microsoft.Web.WebView2.Core.CoreWebView2InitializationCompletedEventArgs e)
        {
            if (e.IsSuccess)
            {
                webView.CoreWebView2.Settings.UserAgent = "O2C-Web";
                webView.CoreWebView2.Settings.AreDefaultContextMenusEnabled = false;
                webView.CoreWebView2.Settings.AreBrowserAcceleratorKeysEnabled = false;

                webView.CoreWebView2.WebResourceRequested += CoreWebView2_WebResourceRequested;
            }
        }

        private void CoreWebView2_WebResourceRequested(object sender, CoreWebView2WebResourceRequestedEventArgs e)
        {
            e.Request.Headers.SetHeader("X-Authorization", "My Auth");
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM