Wpf中WebView2拦截http链接时Uri返回about:blank#blocked的问题求助
Wpf中WebView2拦截http链接时Uri返回about:blank#blocked的问题求助
各位大佬好,我现在在WPF项目里用WebView2组件渲染HTML文档,需求是把文档里的<a>标签链接都在系统默认浏览器里打开,所以我做了个处理——拦截webView.CoreWebView2.NavigationStarting事件,在事件里拿到链接后调用默认浏览器打开,同时取消WebView2自身的导航。
但是现在遇到个头疼的问题:https开头的链接能正常拿到正确的Uri,可http开头的链接,从事件参数e.Uri里拿到的却是about:blank#blocked,完全没法正常跳转。
下面是我当前的事件处理代码:
private void CoreWebView2_NavigationStarting(object sender, CoreWebView2NavigationStartingEventArgs e) { try { string uri = e.Uri.ToString(); if (uri.StartsWith("https://") || uri.StartsWith("http://")) { Process.Start(new ProcessStartInfo(uri) { UseShellExecute = true }); e.Cancel = true; } } catch (Exception ex) { webView.Source = new Uri(e.Uri.ToString()); Log.AddException("Unable to open hyperlink in default browser due to error: " + ex.ToString()); } }
我自己也尝试过一些办法,比如初始化WebView2的时候禁用Web安全,代码如下,但试了之后还是没效果:
CoreWebView2EnvironmentOptions options = new CoreWebView2EnvironmentOptions("disable-web-security"); CoreWebView2Environment environment = await CoreWebView2Environment.CreateAsync(null, null, options); await webView21.EnsureCoreWebView2Async(environment);
另外我还想着从事件的请求头里找找看能不能拿到真实的http链接,结果也没找到有用的信息。
有没有大佬遇到过类似的问题,或者能给我一些解决思路?万分感谢!
备注:内容来源于stack exchange,提问作者Seiont
相关产品推荐
相关产品推荐

