web-dev-qa-db-fra.com

iOS 11.2.1 Xcode 9.2 BoringSSL SSL_ERROR_ZERO_RETURN (6)

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.

7
Tom Hammond

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 un main.Swift; “ Le langage de programmation Swift ” explique comment en ajouter un.
* Notez également que dans Swift, supprimez le point-virgule à la fin de la setenv.

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.

Journalisation des diagnostics de CFNetwork

1
l'L'l