设置 Webview2 header 或 cookie
set Webview2 header or cookie
我想为 Webview2 发出的所有请求设置自定义 header。请帮忙。基本上我想在 webview 本身加载网站,所以我需要在所有请求中收到我的 header。
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");
我找到了满足要求的正确事件,但我不知道如何从 xaml 文件或 .cs 文件中调用该事件。
以下文档说此事件将满足要求。
但是我不知道如何挂接该事件以及从哪里挂接。
该事件 WebResourceRequested 在 CoreWebView2 class 上,在 WebView2.CoreWebView2InitializationCompleted 事件触发后,您可以在 WebView2 class 上找到作为 属性 的 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");
}
看了很多地方才解决
如果您想要 WebResourceRequested
事件,那么您必须注册 Filter
以拦截对所有资源的所有请求。然后然后它会工作或调用。
我在这里发布整个代码:
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");
}
感谢大家的支持和想法。希望此解决方案有所帮助。
我想为 Webview2 发出的所有请求设置自定义 header。请帮忙。基本上我想在 webview 本身加载网站,所以我需要在所有请求中收到我的 header。
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");
我找到了满足要求的正确事件,但我不知道如何从 xaml 文件或 .cs 文件中调用该事件。 以下文档说此事件将满足要求。
但是我不知道如何挂接该事件以及从哪里挂接。
该事件 WebResourceRequested 在 CoreWebView2 class 上,在 WebView2.CoreWebView2InitializationCompleted 事件触发后,您可以在 WebView2 class 上找到作为 属性 的 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");
}
看了很多地方才解决
如果您想要 WebResourceRequested
事件,那么您必须注册 Filter
以拦截对所有资源的所有请求。然后然后它会工作或调用。
我在这里发布整个代码:
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");
}
感谢大家的支持和想法。希望此解决方案有所帮助。