You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android WebView不识别手动安装证书,Xamarin Forms Navigating事件失效求助

Xamarin Forms WebView的SSL证书与Navigating事件问题

问题背景

  • 在Xamarin Forms应用中使用WebView加载包含内网HTTPS资源的生成HTML,这些资源由自签名根证书提供TLS加密保护
  • 根证书已安装到Android设备,谷歌Chrome可正常访问对应资源,但WebView访问时出现SSL错误(错误码3,证书不可信)
  • 测试时自定义WebViewClient并重写OnReceiveSslError方法,手动校验并允许自签名证书(调用handler.Proceed()),解决了SSL问题,但引发新问题:Xamarin.Forms.WebView的Navigating事件不再触发

核心疑问

  • Android的WebView与谷歌Chrome是否使用不同的证书存储?
  • 有没有无需创建WebView自定义渲染器的修复方案,避免引入Navigating事件失效这类潜在问题?

补充更新信息

在XAML中绑定Navigating事件后,为WebView分配自定义渲染器,在OnElementChanged方法中通过SetWebViewClient设置自定义WebViewClient——无论是否重写OnReceiveSslError,都会导致Navigating事件失效。相关代码如下:

protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.WebView> e) {
        base.OnElementChanged(e);

        if (e.NewElement != null) {
            Control.SetWebViewClient(
                new BreakingWebViewClient()
                );

        }
    }

class BreakingWebViewClient : WebViewClient{
    // 即使无任何业务代码,仅继承WebViewClient也会导致Navigating事件失效
}

证书识别问题细节

使用HtmlWebViewSource为WebView加载自定义HTML,其中嵌入的图片引用了受OpenSSL自签名根证书保护的内网HTTPS资源。将根证书通过用户证书小程序安装到Android证书存储后,Chrome等客户端可正常访问该HTTPS资源,但WebView仍无法识别该证书;在重写OnReceiveSslError时,SslError参数中能获取到该证书,但WebView不予认可。

内容的提问来源于stack exchange,提问作者HCL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 01:31:22