c# - 设置 Webview2 header 或 cookie

标签 c# .net wpf winforms webview2

我想为 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 文件调用该事件。 以下文档表示此事件将满足要求。

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

但是我不知道如何 Hook 该事件以及从哪里 Hook 。

最佳答案

看了很多地方才解决

如果您想要 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");
}

感谢大家的支持和想法。希望此解决方案有所帮助。

关于c# - 设置 Webview2 header 或 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68513567/

相关文章:

c# - 如何在应用程序关闭/启动时保存/恢复 SignalR Hub、连接、状态

c#百分比计算说明

c# - 如何在 C# 中绘制形状来制作俄罗斯方 block 克隆?

c# - 如何在 .NET 中访问桌面缓冲区的图像?

c# - 如何在没有 EntityFramework 的情况下使用 ASP.net Core 1 "SignInManager"

c# - HashHelpers.GetPrime 中这一行的目的是什么?

c# - 从内存位置复制字节时是否需要固定结构

c# - 在自己的匿名 Tick 事件处理程序中停止 DispatcherTimer

c# - WPF DataGrid 列标题使用自定义样式调整大小

c# - WPF 如何使边框宽度扩展以填充 DockPanel 中的可用空间