Je frappe cette erreur tout d'un coup dans mon projet qui a un WKWebView affichant une page. La page se charge très bien comme avant. Mais maintenant, lorsque je tente de naviguer vers une autre page à partir de cette page, j'obtiens cette erreur:
[BoringSSL] Function boringssl_session_errorlog: line 2871 [boringssl_session_read] SSL_ERROR_ZERO_RETURN(6): operation failed because the connection was cleanly shut down with a close_notify alert
Il semble que cela soit lié à mon ordinateur/périphérique, comme je ne l’ai jamais fait auparavant.
Certaines choses que j'ai trouvées indiquent que je dois m'assurer que l'autre indicateur lié est défini sur -ObjC. Le paramètre Autorise également les charges arbitraires sur Oui. Les deux sont définis et l'erreur continue.
La page Web utilise TLS 1.2.
La raison exacte de l'erreur affichée ne peut pas être déterminée sans une journalisation plus détaillée.
CFNetwork
gère le noyau des classes réseau de Foundation
- Il a également la capacité (souvent oubliée) de la journalisation détaillée via la variable d’environnement CFNETWORK_DIAGNOSTICS
.
Activation par programme de l'enregistrement CFNetwork
du diagnostic:
setenv("CFNETWORK_DIAGNOSTICS", "3", 1);
Il doit être défini sur une valeur entière comprise entre 0 et 3, où 0 est désactivé et les nombres les plus élevés donnent progressivement plus de journalisation. Pendant le développement normal, vous pouvez définir cette variable d’environnement via l’éditeur de schémas de Xcode. Lorsque l'application est exécutée à partir de Xcode, les entrées du journal CFNetwork
apparaissent dans la zone de la console de débogage (si elles ne sont pas visibles, choisissez View
> Debug Area
> Show Debug Area
).
La variable d’environnement doit être placée au tout début de la séquence de lancement de l’application. Il est normalement suffisant de placer cela au début de main, mais si vous avez des initialiseurs statiques C++ qui utilisent CFNetwork
, vous devrez le mettre avant ceux-ci.
Note: Dans Swift, ce code irait dans
main.Swift
. Par défaut, les applications Swift ne pas avoir unmain.Swift
; “ Le langage de programmation Swift ” explique comment en ajouter un.
* Notez également que dans Swift, supprimez le point-virgule à la fin de lasetenv
.
Définir la variable d'environnement ci-dessus devrait certainement aider à déterminer où se situe le problème, ou à tout le moins vous donner un point de départ pour commencer à diagnostiquer un message d'erreur quelque peu vague.