2017-01-26 3 views
1

Ich habe erstellt Cordova Android App, und ich bin vor dieser Frage:Cordova - Android HTTPS-Anfragen nicht auf 4G

Wenn auf 3G/4G, wenn ich versuche Antrag auf meinem Server mache ich den Fehler :

ERR_TUNNEL_CONNECTION_FAILED. 

Wenn ich auf WIFI bin, funktioniert alles gut. Dies ist nicht auf allen Android-Geräten passiert, ich habe dieses Problem auf Samsung Galaxy A5 (nd einige andere Androids).

Ich habe entdeckt, dass wenn wir HTTP anstelle von HTTPS verwenden, alles in Ordnung ist.

Auch nach https://www.sslshopper.com/ssl-checker.html und https://www.digicert.com/help/ allem scheint mit unserem SSL-Zertifikat in Ordnung zu sein.

Wie können wir dieses Problem lösen?

+0

Überprüfen Sie Ihre Proxy-Einstellungen. Wenn möglich, entfernen Sie den Proxy und versuchen Sie es erneut. –

+0

haben Sie Payment Gateway in Ihrer App implementiert? –

+0

Was hat ein Zahlungs-Gateway damit zu tun?Wir verwenden keine externen Zahlungs-Gateways, nur Android In-App-Käufe – hyperN

Antwort

1

Dies geschieht in der Regel, weil Ihr Provider einen Proxy in Ihrem Gerät zu konfigurieren. Versuchen Sie, Ihre aktuelle APN-Einstellung zu überprüfen und die Felder Proxy und Port zu löschen.

Dies kann auch auftreten, wenn Sie einen Port verwenden verschieden von 443

+0

Danke für die Antwort, aber meine App ist B2C App, mit mehr als 100k + aktive Benutzer, so dass die Lösung innerhalb der App sein muss, kann ich nicht auf die Benutzer angewiesen, ihre Proxies zu konfigurieren – hyperN

+0

Es gibt keine Lösung, die Sie in der App implementieren können, betrifft dies nur Benutzer mit einem Proxy-Set, nicht alle von ihnen haben es festgelegt, dies hängt vom Anbieter ab. – jcesarmobile

+0

Aber zum Beispiel, was App, Facebook und ähnliche Apps funktionieren auf diesem Gerät ohne Probleme, sollten sie nicht dasselbe Problem haben? – hyperN

0

Ich denke, dass es ein Problem auf Ihrem Android-Gerät ist. Ich recherchierte darüber und empfehle Ihnen, these steps zu folgen.

auch etwas, das Sie versuchen können, ist cordova-whitelist-plugin zu installieren und Ihre config.xml Datei zu konfigurieren:

<allow-navigation href="*" /> 

bearbeiten:

Um Ihre config.xml Sie auch hinzufügen müssen :

<!-- Don't block any requests --> 
<access origin="*" /> 

Auch müssen Sie die folgenden m enthalten eta-Tag zu Ihrer HTML-Seite:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"> 

This policy allows everything (eg CSS, AJAX, object, frame, media, etc) except that * CSS only from the same origin and inline styles, * scripts only from the same origin and inline styles, and eval()

+0

Danke für Ihre Antwort, aber ich habe Whitelist-Plugin installiert und ich habe versucht, diese Zeile hinzufügen, aber das hat nicht geholfen. Auch das Folgen dieser Schritte ist nicht hilfreich, da die App von mehr als 100k Leuten aktiv genutzt wird, also brauche ich eine Lösung innerhalb der appp – hyperN

+0

Ich habe meine Antwort aktualisiert. Bitte überprüfen Sie es und ich hoffe, dass es Ihnen hilft :) –

+0

Danke, aber ich denke nicht, dass das helfen wird, denn ich habe schon eine ähnliche Zeile: \t hyperN

0

Ich frage mich, ob Sie Ihre Antwort oder nicht gefunden haben, wollen aber trotzdem Antwort für andere schreiben für die Lösung suchen: Beachten Sie, dass Cordova https-Aufrufe an Server mit nicht vertrauenswürdigem SSL-Zertifikat, die auf diesen Computern installiert sind, nicht zulässig. Sie können diesen Fehler ignorieren und mit einer kleinen Änderung in einer Cordova-Datei fortfahren.

Open “\cordova\platforms\android\CordovaLib\src\org\apache\cordova\ CordovaWebViewClient.java”. In 'onReceivedSslError' method, comment the else part and add handler.proceed() instead.

0

Diese Probleme geschehen mit mobiler Datenverbindung, da der Standard Access Point, der mit dem Träger kam im Allgemeinen Proxy haben, die nicht erlaubt SSL-Tunneling wird. Alles, was Sie tun müssen, ist, Proxy und Port auf nichts zu setzen.

Stellen Sie außerdem sicher, dass nur Port 443 für HTTPS verwendet wird.

Verwandte Themen