Phonegap/Cordova whitelisted cross domain SSL request not working after exporting APK

耗尽温柔 提交于 2019-11-29 02:26:22

The problem is you are using a self-signed cert. The Android WebView does not allow by default self-signed SSL certs. PhoneGap/Cordova overrides this in the CordovaWebViewClient class but does not deviate its behaviour by much; if the app is debug-signed, it will proceed and ignore the error, otherwise it will fail.

You could change the above-linked to code in your application and make the onReceivedSslError method always call handler.proceed() - but this isn't recommended. Don't use a self-signed certificate!

I did the following to get around the restriction (currently using Cordova 1.7.0). This is definitely inherently insecure:

public class MyWebViewClient extends CordovaWebViewClient {

    public MyWebViewClient(DroidGap ctx) {
        super(ctx);
    }

    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        // testing against getPrimaryError() or hasErrors() will fail on Honeycomb or older.
        // You might check for something different, such as specific info in the certificate,
        //if (error.getPrimaryError() == SslError.SSL_IDMISMATCH) {
            handler.proceed();
        //} else {
        //    super.onReceivedSslError(view, handler, error);
        //}
    }
}

and then in the main activity:

@Override
public void init() {
    super.init();

    //pass in our webviewclient to override SSL error
    this.setWebViewClient(this.appView, new MyWebViewClient(this));
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!