Phonegap / Cordova lista cruzada de dominios cruzados solicitud SSL no funciona después de exportar APK
He creado una aplicación de teléfono que necesita comunicarse con un servicio SSL auto-firmado.
I whitelisted mi url en res / xml / cordova.xml como así:
- Android WebView.postUrl () que muestra la pantalla en blanco al publicar en la URL HTTPS
- Facebook deauthorize callback no se llama
- $ http solicitud estado 0 con https
- @ Convertido a% 40 en la solicitud HTTPPost
- Error de certificado no confiable y httpclient en android
<access origin="https://www.mydomain.com" subdomains="true" />
Y esto funciona bien cuando corro y construyo desde eclipse, pero si luego exportar y firmar mi aplicación e instalar manualmente el APK entonces la aplicación no puede comunicarse con mi servicio web.
La comunicación con el servidor se realiza con la biblioteca Sencha Touch de la siguiente manera:
Ext.Ajax.request({ url: 'https://www.mydomain.com', method: 'get', success: function(result) { }, failure: function(result) { } });
Cualquier ayuda muy apreciada
- Android No se puede verificar el certificado autofirmado sin una conexión previa a Internet
- Android Restlet HTTPS
- Excepción HTTPS de Android Restablecimiento de la conexión por pares
- Solicitud HTTPS devolviendo 2032 Stream Error sólo para Android con Flex 4.6 Mobile
- SSLPeerUnverifiedException al crear una conexión SSL en Android
- Cleartext El tráfico HTTP a myserver.com no está permitido en la vista previa de Android N
- ksoap2 HttpsTransportSE: no funciona con el certificado
- TLS con extensión de indicación de nombre de servidor (RFC 3546) en Android
El problema es que está utilizando un cert auto-firmado. La WebView de Android no permite por defecto certificados SSL auto-firmados. PhoneGap / Cordova anula esto en la clase CordovaWebViewClient pero no desvía su comportamiento por mucho; Si la aplicación está debug-firmada, proceed
e ignorará el error, de lo contrario, se producirá un error.
Puede cambiar el código vinculado anteriormente en su aplicación y hacer que el método onReceivedSslError
siempre llame a handler.proceed()
– pero esto no se recomienda. ¡No use un certificado autofirmado!
Hice lo siguiente para evitar la restricción (actualmente usando Cordova 1.7.0). Esto es definitivamente inherentemente inseguro:
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); //} } }
Y luego en la actividad principal:
@Override public void init() { super.init(); //pass in our webviewclient to override SSL error this.setWebViewClient(this.appView, new MyWebViewClient(this)); }
- Vista previa de Android Wear no se conecta a Wear Emulator
- Errores "Ningún recurso encontrado" al crear una aplicación