gpt4 book ai didi

ios - SSL_ERROR_SSL(1) : operation failed within the library

转载 作者:行者123 更新时间:2023-12-01 19:52:00 28 4
gpt4 key购买 nike

我得到了一些SSL Error (这导致我的项目停止/挂起而没有崩溃,因为我有一个 DispatchGroup 等待请求),我不知道它们是如何引起的,它们是什么,或者如何处理它。

我已经粗略阅读了很多关于这个问题的页面,但是没有太多文档或有同样问题的人。我已经尝试过changing the info.plist但这似乎没有帮助。两者plist看起来像这样:( accounts.spotify.com 是访问 token 请求的 URL 的域)

enter image description here

当我向服务器发出请求时,我可以看到我的代码失败。 (这是在我的框架中)。如前所述,我有一个 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): operation failed within the library

2018-08-18 21:36:45.748123+0100 Songvote[4854:1517160] [BoringSSL] boringssl_session_handshake_error_print(205) [C2.1:2][0x107d7c600] 4427428040:error:100000d7:SSL routines:OPENSSL_internal:SSL_HANDSHAKE_FAILURE:/BuildRoot/Library/Caches/com.apple.xbs/Sources/boringssl/boringssl-109.200.32/ssl/ssl_lib.cc: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): operation failed within the library

2018-08-18 21:36:45.748432+0100 Songvote[4854:1517160] [BoringSSL] boringssl_session_handshake_error_print(205) [C2.1:2][0x107d7c600] 4427428040:error:100000d7:SSL routines:OPENSSL_internal:SSL_HANDSHAKE_FAILURE:/BuildRoot/Library/Caches/com.apple.xbs/Sources/boringssl/boringssl-109.200.32/ssl/ssl_lib.cc: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): operation failed within the library

2018-08-18 21:36:45.754640+0100 Songvote[4854:1517160] [BoringSSL] boringssl_session_handshake_error_print(205) [C2.1:2][0x107d7c600] 4427428040:error:100000d7:SSL routines:OPENSSL_internal:SSL_HANDSHAKE_FAILURE:/BuildRoot/Library/Caches/com.apple.xbs/Sources/boringssl/boringssl-109.200.32/ssl/ssl_lib.cc: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): operation failed within the library

2018-08-18 21:36:45.754796+0100 Songvote[4854:1517160] [BoringSSL] boringssl_session_handshake_error_print(205) [C2.1:2][0x107d7c600] 4427428040:error:100000d7:SSL routines:OPENSSL_internal:SSL_HANDSHAKE_FAILURE:/BuildRoot/Library/Caches/com.apple.xbs/Sources/boringssl/boringssl-109.200.32/ssl/ssl_lib.cc:1081:

2018-08-18 21:38:43.427156+0100 Songvote[4854:1517503] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C1.1:2][0x107e1b4c0] get output frames failed, state 8196

2018-08-18 21:38:43.427656+0100 Songvote[4854:1517503] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C1.1:2][0x107e1b4c0] get output frames failed, state 8196

2018-08-18 21:38:43.429723+0100 Songvote[4854:1517503] TIC Read Status [1:0x0]: 1:57

2018-08-18 21:38:43.429976+0100 Songvote[4854:1517503] TIC Read Status [1:0x0]: 1:57

2018-08-18 21:38:46.008365+0100 Songvote[4854:1517503] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C2.1:2][0x107d7c600] get output frames failed, state 8196

2018-08-18 21:38:46.008664+0100 Songvote[4854:1517503] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C2.1:2][0x107d7c600] get output frames failed, state 8196

2018-08-18 21:38:46.010037+0100 Songvote[4854:1517503] TIC Read Status [2:0x0]: 1:57

2018-08-18 21:38:46.010215+0100 Songvote[4854:1517503] TIC Read Status [2:0x0]: 1:57

enter image description here

这都是为了 Spotify通过Alamofire请求以前有效,但现在神秘地不起作用。它不适用于我的设备模拟器。

这是与安全互联网连接相关的问题吗?或者这是另一个问题?

我看过的一些链接:

编辑:

这是 Spotify 服务器上的问题吗?或者 Xcode 10 中的错误?我移动了我的框架.swift文件添加到我的项目中,并且仍然获取日志。

我在请求之前也收到这些错误,奇怪🤔。

这就是握手错误,但我没有对此进行任何配置:

The SSL handshake is initiated when your browser issues a secure connection request to a Web server. The server sends a public key to your computer, and your computer checks the certificate against a known list of certificate authorities. ... Test your SSL functionality by intentionally causing the handshake to fail.

我什至尝试使用 git 在早期版本上 checkout 以反转所有更改(这在早期版本中绝对工作得很好) ,这对此没有影响。

<小时/>

编辑:临时解决方案:

iOS 12 似乎不再处理这些网络请求。我两天前向苹果发送了一份错误报告,希望他们能尽快解决这个问题。那我做了什么?

好吧,目前我的 iPhone 7 没什么用,因为我使用的是 iOS 12 beta。所以现在唯一的选择是在模拟器上运行我的项目。要执行此操作(就好像您使用的是 Xcode 10 beta,因为模拟器是 iOS 12),请转到 Xcode -> Preferences -> Components -> iOS 11.4 Simulator然后下载它。现在,当您选择模拟器时,请选择显示 iOS 11.4 的模拟器。 .

  • 这部分不再正确。
<小时/>

是什么原因造成的?

虽然这个错误不会产生任何影响,但它是在 iOS 12 中运行项目时引起的。据我所知,这不是一个安全问题。然而,我的代码未运行的问题是由死锁引起的,而不是我想象的那样是因为这个错误。

更新:Apple 对我的错误报告做了什么

好吧,虽然我没有收到来自 Apple 的消息或任何信息,但该报告被标记为“重复”,因为有人在我之前报告过此情况。如果我得到有关何时修复的任何信息,我会在此处更新。

<小时/>

如果您有任何问题、提示或指示,请告诉我!预先感谢!

最佳答案

死锁

我假设 siteifyRequest 将在主线程上调用。

所以如果主线程到达该行

group.wait()

这行responseJSONcompletionHandler还没有被调用:

group.leave()

然后主线程由于上面调用了group.wait()而被阻塞。由于主线程被阻塞,无法调用 group.leave() 。经典僵局。

验证

在该行设置断点

if let safeStatus = status {

表明该行从未被调用。

正在运行的最小示例

这里作为一个起点,提供一个提供结果的最小示例的代码。

import UIKit
import Alamofire

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

self.contactSpotify {
print ("result: \(String(describing: $0)) error: \(String(describing: $1))")
}
}

func contactSpotify(completion: @escaping ([String: Any]?, Error?) -> Void) {
let url = URL(string: "https://accounts.spotify.com/api/token")!
Alamofire.request(url,
method: .post,
parameters: ["grant_type": "refresh_token",
"client_id": "<someClientId>",
"refresh_token": "<someRefreshToken>",
"client_secret": "<someClientSecret>"])
.validate()
.responseJSON { response in
guard response.result.isSuccess else {
completion(nil, response.result.error)
return
}

completion(response.result.value as? [String: Any], nil)
}
}

}

这在控制台中给出输出:

result: Optional(["access_token": XXX, "scope": user-read-email user-read-private, "token_type": Bearer, "expires_in": 3600]) error: nil

看截图: console output

info.plist 中的 ATS 设置

Spotify 在其服务器上提供了有效的 TLS 证书链。所以不需要在info.plist中进行ATS设置。

控制台中的 SSL 警告

当我像您一样在 iOS 12 模拟器上运行应用程序时,我在控制台中收到相同的 SSL 警告。尽管如此,连接还是建立了,并且请求传送了数据。也许这会在下一个测试版中消失。

关于ios - SSL_ERROR_SSL(1) : operation failed within the library,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51912404/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com