Quiero establecer un encabezado personalizado para todas las solicitudes que realiza Webview2. Por favor ayuda. Básicamente, quiero cargar el sitio web en la vista web, por lo que es necesario que reciba mi encabezado en todas las solicitudes.
MainWindow.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");Encontré el evento correcto que funcionará para el requisito, pero no sé cómo llamar a ese evento desde el archivo xaml o desde el archivo .cs. Los siguientes documentos dicen que este evento funcionará para el requisito.
PERO cómo enganchar ese evento y desde dónde no lo sé.
Lo resolví después de mirar en muchos lugares.
Si desea el evento WebResourceRequested , debe registrar el Filter que interceptará todas las solicitudes de todos los recursos. Entonces y luego funcionará o llamará.
Estoy publicando el código completo aquí:
private void webView_CoreWebView2InitializationCompleted(object sender, Microsoft.Web.WebView2.Core.CoreWebView2InitializationCompletedEventArgs e) { //Following line is MUST if you want to use WebResourceRequested Event webView.CoreWebView2.AddWebResourceRequestedFilter("*", CoreWebView2WebResourceContext.All); webView.CoreWebView2.Settings.UserAgent = "MY-AGENT"; 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"); }Gracias a todos por el apoyo y las ideas. Espero que esta solución ayude.
Ese evento WebResourceRequested está en la clase CoreWebView2 y puede encontrar su CoreWebView2 como una propiedad en la clase WebView2 después de que se active el evento WebView2.CoreWebView2InitializationCompleted.
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"); }