我得到了大约SSL Error
个(这导致我的项目停止/挂起而没有崩溃,因为我有一个DispatchGroup
在等待请求),我不知道它们是如何产生的,它们是什么,或者如何处理它.
我已经读了很多关于这个问题的第roughly页,但是没有太多文档或有相同问题的人.我试了changing the info.plist次,但似乎没用.这两个plist
都是这样的:(accounts.spotify.com
是访问令牌请求的URL所在的域)
当我向服务器发出请求时,我可以看到我的代码失败了.(这在我的框架内).如前所述,我有一个DispatchGroup
等待这个请求,但代码停止.
self.currentToken = try self.spotifyRequest("https://accounts.spotify.com/api/token", method: .post, parameters: parameters)
我的请求方法:
private func spotifyRequest(_ url: URLConvertible, method: HTTPMethod, parameters: Parameters? = nil, headers: HTTPHeaders? = nil) throws -> JSONStandard {
// Create a dispatch group to handle threads
let group = DispatchGroup()
group.enter()
// Status of the request (starts as nil)
var status: JSONStandard?
DispatchQueue.global(qos: .userInitiated).async {
Alamofire.request(url, method: method, parameters: parameters, headers: headers).responseJSON(completionHandler: { response in
// Check if response is valid
if let requestResponse = response.result.value as? JSONStandard {
status = requestResponse
} else {
status = nil
}
// Let the next tasks be completed, it has finished waiting for the request
group.leave()
})
}
// Wait for a result
group.wait()
// Return value or throw an error
if let safeStatus = status {
return safeStatus
} else {
getAccessToken()
throw SpotifyError.failedToCompleteRequest
}
}
我不确定是什么导致了这个问题,因为我所做的只是再次对框架进行了轻微的编辑和归档.
然而,早些时候它对这两个都有效(因为我使用的是this universal framework script)
这是我的事故记录(我一点都不懂!):
2018-08-18 21:36:45.747984+0100 Songvote[4854:1517160][BoringSSL]BoringSSL_session_errorlog(224)[C2.1:2][0x107d7c600][BoringSSL_session_read]SSL_ERROR_SSL(1):库内的操作失败
2018-08-18 21:36:45.748123+0100歌曲投票[4854:1517160][BoringSSL]BoringSSL_会话_握手_错误_打印(205)[C2.1:2][0x107d7c600]4427428040:错误:10000D7:SSL routine :OPENSSL_内部:SSL_握手失败:/BuildRoot/Library/Caches/com.苹果xbs/Sources/boringssl/boringssl-109.200.32/ssl/ssl_-lib.抄送:1081:
2018-08-18 21:36:45.748238+0100 Songvote[4854:1517160][BoringSSL]BoringSSL_session_errorlog(224)[C2.1:2][0x107d7c600][BoringSSL_session_read]SSL_ERROR_SSL(1):库内的操作失败
[openc2/SSL-buildu:SSL-SSL-tu.com]内部握手错误[0xc6:u]1000ssl-tu:SSL-tu:SSL-tu-tu.苹果xbs/Sources/boringssl/boringssl-109.200.32/ssl/ssl_-lib.抄送:1081:
2018-08-18 21:36:45.754554+0100 Songvote[4854:1517160][BoringSSL]BoringSSL_session_errorlog(224)[C2.1:2][0x107d7c600][BoringSSL_session_read]SSL_ERROR_SSL(1):库内的操作失败
2018-08-18 21:36:45.754640+0100歌曲投票[4854:1517160][BoringSSL]BoringSSL_会话_握手_错误_打印(205)[C2.1:2][0x107d7c600]4427428040:错误:10000D7:SSL routine :OPENSSL_内部:SSL_握手失败:/BuildRoot/Library/Caches/com.苹果xbs/Sources/boringssl/boringssl-109.200.32/ssl/ssl_-lib.抄送:1081:
2018-08-18 21:36:45.754717+0100 Songvote[4854:1517160][BoringSSL]BoringSSL_session_errorlog(224)[C2.1:2][0x107d7c600][BoringSSL_session_read]SSL_ERROR_SSL(1):库内的操作失败
2018-08-18 21:36:45.754796+0100歌曲投票[4854:1517160][BoringSSL]BoringSSL_会话_握手_错误_打印(205)[C2.1:2][0x107d7c600]4427428040:错误:10000D7:SSL routine :OPENSSL_内部:SSL_握手失败:/BuildRoot/Library/Caches/com.苹果xbs/Sources/boringssl/boringssl-109.200.32/ssl/ssl_-lib.抄送:1081:
2018-08-18 21:38:43.427156+0100 Songvote[4854:1517503][BoringSSL]nw_协议_BoringSSL_获取_输出_帧(1301)[C1.1:2][0x107e1b4c0]获取输出帧失败,状态8196
2018-08-18 21:38:43.427656+0100 Songvote[4854:1517503][BoringSSL]nw_协议_BoringSSL_获取输出_帧(1301)[C1.1:2][0x107e1b4c0]获取输出帧失败,状态8196
2018-08-18 21:38:43.429723+0100 Songvote[4854:1517503]TIC读取状态[1:0x0]:1:57
2018-08-18 21:38:43.429976+0100 Songvote[4854:1517503]TIC读取状态[1:0x0]:1:57
2018-08-18 21:38:46.008365+0100 Songvote[4854:1517503][BoringSSL]nw_协议_BoringSSL_获取_输出_帧(1301)[C2.1:2][0x107d7c600]获取输出帧失败,状态8196
2018-08-18 21:38:46.008664+0100 Songvote[4854:1517503][BoringSSL]nw_协议_BoringSSL_获取_输出_帧(1301)[C2.1:2][0x107d7c600]获取输出帧失败,状态8196
2018-08-18 21:38:46.010037+0100 Songvote[4854:1517503]TIC读取状态[2:0x0]:1:57
2018-08-18 21:38:46.010215+0100 Songvote[4854:1517503]TIC读取状态[2:0x0]:1:57
这是一个从Spotify
到Alamofire
的请求,它以前工作过,现在神秘地不工作.它在我的设备OR模拟器上不工作.
这是与安全的互联网连接有关的问题吗?或者这是另一个问题?
我看到的一些链接:
- https://github.com/AFNetworking/AFNetworking/issues/3999
- NSURLSession "HTTP load failed kCFStreamErrorDomainSSL, -9813 ; Self signing certificate
- https://forums.developer.apple.com/thread/79025
- https://forums.developer.apple.com/thread/14221
- iOS 9.3 : An SSL error has occurred and a secure connection to the server cannot be made
- iOS9 getting error “an ssl error has occurred and a secure connection to the server cannot be made”
Edits:
这是Spotify服务器上的问题吗?还是Xcode 10中的一个bug?我把我的framework .swift
文件移到了我的项目中,但仍然得到了日志(log).
奇怪的是,在我提出请求之前,我也会遇到这些错误?.
这就是握手错误,但我不做任何配置:
SSL握手在浏览器向Web服务器发出安全连接请求时启动.服务器向您的计算机发送公钥,您的计算机根据已知的证书颁发机构列表判断证书...通过故意导致握手失败来测试SSL功能.
我甚至试着在早期版本上使用git
来逆转所有的更改(在早期版本中,它肯定工作得很好),这对这个没有影响.
Edit: The temporary solution:
iOS 12似乎不再适用于这些网络请求.我两天前给苹果发了一份错误报告,希望他们能尽快解决.那我做了什么?
现在,我的iPhone 7没用了,因为我在iOS 12测试版上.所以现在唯一的 Select 就是在模拟器上运行我的项目.要做到这一点(就像你是在Xcode 10测试版,因为模拟器是iOS 12),请转到Xcode -> Preferences -> Components -> iOS 11.4 Simulator
,然后下载它.现在,当你 Select 一个模拟器时, Select iOS 11.4
.
- This part is no longer true.
What causes this?
虽然这个错误不会影响任何事情,但它是在iOS 12中运行项目时产生的.据我所知,这不是安全问题.然而,我的代码没有运行的问题是由死锁引起的,而不是我认为是因为这个错误.
Update: What Apple has done about my bug report
嗯,虽然我没有收到苹果的消息或任何东西,但报告被标记为"重复",因为有人在我之前报告过.如果我得到任何关于何时修复的信息,我会在这里更新.
If you have any questions, tips or pointers, please let me know! Thanks in advance!