iOS 11.2.1 Xcode 9.2中的BoringSSL SSL_ERROR_ZERO_RETURN(6)。

7

我在我的项目中遇到了一个错误,与WKWebView显示页面有关。该页面加载正常,但是当我尝试从该页面导航到另一个页面时,我会收到以下错误:

[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

看起来这似乎与我的个人电脑/设备有关,因为我以前从未遇到过这种情况。

我发现有些东西说我需要确保其他链接标志设置为 -ObjC。同时将 允许任意加载 设置为 是。这两个都已经设置好了,但错误仍然存在。

该网页正在使用TLS 1.2。


我也经常看到这个。它似乎不会影响应用程序的性能。 - David S.
我也遇到了同样的问题。苹果开发者论坛完全没有帮助。我们需要一个逐步解决这个问题的过程。 - Jimbo
请查看此链接:https://forums.developer.apple.com/thread/95206 - NeverHopeless
可能是服务器端安全(https)问题或后端需要更新SSL证书... 在其他stackoverflow链接中找到了这条消息 - 来自openssl文档openssl.org/docs/manmaster/man3/SSL_get_error.html: "SSL_ERROR_ZERO_RETURN:TLS/SSL连接已关闭。如果协议版本为SSL 3.0或更高版本,则仅在协议中发生关闭警报时返回此结果代码,即如果连接已干净地关闭。请注意,在这种情况下,SSL_ERROR_ZERO_RETURN并不一定表示底层传输已关闭。" - Nirav Kotecha
1个回答

1
无法确定错误原因,需要更详细的日志记录。 CFNetwork 处理 Foundation 的网络类核心——它还可以通过CFNETWORK_DIAGNOSTICS 环境变量进行详细日志记录(通常被忽视)。 编程方式启用 CFNetwork 诊断日志记录:
setenv("CFNETWORK_DIAGNOSTICS", "3", 1);

它应该设置为从0到3的整数值,其中0表示关闭,数字越高,记录日志的数量就越多。在正常开发过程中,您可以通过Xcode的方案编辑器设置此环境变量。当应用程序从Xcode运行时,CFNetwork日志条目将出现在调试控制台区域(如果不可见,请选择View > Debug Area > Show Debug Area)。
环境变量应该放置在应用程序启动序列的开头。通常将其放在main的开头就足够了,但是如果您有使用CFNetwork的C++静态初始化程序,则必须将其放在这些程序之前。
注意:在Swift中,此代码应放置在main.swift中。默认情况下,Swift应用程序没有main.swift;“The Swift Programming Language”解释了如何添加一个。
*还要注意,在Swift中删除setenv末尾的分号。 设置上述环境变量肯定有助于确定问题所在,或者至少给您一个起点来诊断某种含糊错误消息。
↳ CFNetwork诊断日志

无法使其不显示警告,app.setenv("CFNETWORK_DIAGNOSTICS", "3", 1)会生成一个非常长的警告报告,而setenv("CFNETWORK_DIAGNOSTICS", "0", 0)会使我回到起始状态。也许只需让它记录日志,看起来很满意! - user462990

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接