Reputation: 313
I am running a client side blazor wpf hybrid with a BlazorWebView control. I need to hook into the result when I load into an iframe, technically it loads from disk a wasm that I need to inject some headers for. However, my WebView2_FetchRequestPaused event is not getting trigged at all. The setup for the event seems to work fine. Please, does anyone have any ideas how I can get it to trigger, or another way of injecting the headers. In the network of the chrome debugger pane I see loading from url's like "https://0.0.0.0/js/fieldItemsScripts.js" and I need to inject into the result of all calls to https://0.0.0.0/* and add some extra headers.
private async void OnCoreWebView2InitializationCompleted (object? sender, CoreWebView2InitializationCompletedEventArgs e)
{
if (sender != null && e.IsSuccess)
{
//(sender as Microsoft.Web.WebView2.Wpf.WebView2).CoreWebView2.AddWebResourceRequestedFilter("*", CoreWebView2WebResourceContext.All); // have to have a filter
//(sender as Microsoft.Web.WebView2.Wpf.WebView2).CoreWebView2.WebResourceRequested += WebView_WebResourceRequested;
//(sender as Microsoft.Web.WebView2.Wpf.WebView2).CoreWebView2.WebResourceResponseReceived += WebResourceResponseReceived;
var receiver = (sender as Microsoft.Web.WebView2.Wpf.WebView2).CoreWebView2.GetDevToolsProtocolEventReceiver("Fetch.requestPaused");
receiver.DevToolsProtocolEventReceived += WebView2_FetchRequestPaused;
await (sender as Microsoft.Web.WebView2.Wpf.WebView2).CoreWebView2.CallDevToolsProtocolMethodAsync("Fetch.enable", "{}");
}
}
private async void WebView2_FetchRequestPaused(object? sender, CoreWebView2DevToolsProtocolEventReceivedEventArgs e)
{
if (sender != null)
{
var doc = JsonDocument.Parse(e.ParameterObjectAsJson);
var id = doc.RootElement.GetProperty("requestId");
string type = doc.RootElement.GetProperty("resourceType").ToString();
string method = doc.RootElement.GetProperty("request").GetProperty("method").ToString();
string payload = "{\"requestId\":\"" + id + "\"}";
if (doc.RootElement.TryGetProperty("headers", out JsonElement headers))
{
//
Console.WriteLine(headers.ToString());
}
await MainWebView.WebView.CoreWebView2.CallDevToolsProtocolMethodAsync("Fetch.continueRequest", payload);
}
}
Upvotes: 0
Views: 27