由于 SSL 证书,InAppBrowser 无法加载网站

InAppBrowser not loading website because of SSL certificate

我有一个带 InAppBrowser 插件的 Ionic 5.x 应用程序。我正在尝试使用该插件加载一个网站,浏览器打开但页面完全空白并且没有抛出任何错误。

经过几个小时的调试,我得出结论,问题是网站的证书不被信任。

没有意义的是,在浏览器上查看该网站是安全的,并且 "Verified by: DigiCert Inc"

同问题的其他问题: , Cordova inAppBrowser opens www.google.com but not my custom facebook login page?

有人知道为什么会这样吗?

我用来打开的代码:

this.browser = this.inAppBrowser.create( "https://mywebsite.com/", "_blank", "location=yes" );
this.browser.on("loadstart").subscribe( event => {
  console.log( event ); // not triggered
});
this.browser.on("loadstop").subscribe( event => {
  console.log( event ); // triggered
});
this.browser.on("loaderror").subscribe( event => {
  console.log( event ); // not triggered
});

经过许多小时的挖掘,我终于找到了解决方案。编辑插件文件并不理想,但它确实解决了这个问题!

编辑此文件:plugins/cordova-plugin-inappbrowser/src/android/InAppBrowser.java

将此添加到导入部分:

import android.net.http.SslError;
import android.webkit.SslErrorHandler;

然后将此添加到 InAppBrowserClient class(大约第 1224 行):

public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
    handler.proceed();
    return;
}
  1. 在文件中 "plugins\cordova-plugin-inappbrowser\src\android\InAppBrowser.java":
    将此行添加到导入部分:

    import android.net.http.SslError;
    import android.webkit.SslErrorHandler;
    
  2. 将此添加到 InAppBrowserClient class(大约第 1224 行):

    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        handler.proceed();
        return;
    }
    
  3. 在项目根控制台中:执行

    $ cordova platform remove android
    $ cordova platform add android