设置 Webview2 标头或 cookie
Posted
技术标签:
【中文标题】设置 Webview2 标头或 cookie【英文标题】:set Webview2 header or cookie 【发布时间】:2021-10-01 10:20:00 【问题描述】:我想为 Webview2 发出的所有请求设置自定义标头。请帮忙。基本上我想在 webview 本身中加载网站,所以我需要收到所有请求的标题。
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 文件中调用该事件。 以下文档说此事件将满足要求。
https://docs.microsoft.com/en-us/dotnet/api/microsoft.web.webview2.core.corewebview2.webresourcerequested?view=webview2-dotnet-1.0.864.35
但是如何挂钩该事件以及我不知道的地方。
【问题讨论】:
【参考方案1】:我看了很多地方后解决了。
如果您想要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");
感谢大家的支持和想法。希望这个解决方案有所帮助。
【讨论】:
【参考方案2】:该事件 WebResourceRequested 位于 CoreWebView2 类上,您可以在 WebView2.CoreWebView2InitializationCompleted 事件触发后找到您的 CoreWebView2 作为 WebView2 类上的属性。
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");
【讨论】:
这不起作用。存在构建错误。我之前也试过这个。以上是关于设置 Webview2 标头或 cookie的主要内容,如果未能解决你的问题,请参考以下文章
WebView2:在 C# 中从 Javascript 代码设置对象属性
通过 WebView2 将对象从 .NET 设置为 JavaScript 代码