Un collègue m'a donné un projet Flutter pour essayer de créer l'application sous iOS (j'utilise un Mac, nous utilisons tous les deux Android Studio). Tout va bien sauf cette erreur:
client.badCertificateCallback = (X509Certificate cert, String host, int port) => true;
Si j'utilise HTTP au lieu de HTTPS, cela fonctionne évidemment. Mon collègue a dit qu'il a résolu en ajoutant cette ligne de code:
Handshake error in client (OS Error: CERTIFICATE_VERIFY_FAILED: ok(handshake.cc:363))
Cette ligne de code est également dans mon projet car la source est la même. Alors pourquoi ça marche sur Android, mais pas sur iOS?
4 Réponses :
Vérifiez votre certificat https que vous utilisez, je pense qu'iOS a des mesures plus strictes qu'android en ce qui concerne la connexion https. Pour être prudent, essayez de mettre à jour votre certificat de serveur.
cela devrait fonctionner sur ios si vous avez ajouté cette ligne
client.badCertificateCallback = (X509Certificate cert, String host, int port) => true;
alors vérifiez que vous utilisez la même instance du client pour votre demande, et que vous faites la demande après vous définissez le paramètre badCertificateCallback
meilleure façon de résoudre les problèmes de certification SSL sur tous les sites http demandes
il fonctionne sur les deux plates-formes (Android et iOS)
class MyHttpOverrides extends HttpOverrides{ @override HttpClient createHttpClient(SecurityContext context){ return super.createHttpClient(context) ..badCertificateCallback = (X509Certificate cert, String host, int port)=> true; } } void main(){ HttpOverrides.global = new MyHttpOverrides(); runApp(new MyApp()); }
Ancienne question mais ma solution était de m'assurer que l'heure / la date était correctement réglée sur le client