swift - 在 Alamofire5 上执行 SSL 固定?
问题描述
我正在尝试使用 Alamofire 5 实现 SSL 固定,但在实现过程中遇到了问题。我无法将 AFsession.request 作为方法调用:.post 被视为额外参数。我在下面附上了我的代码。
会议 :
final class AFsession {
let evaluators = [
"mydomain.com":
PinnedCertificatesTrustEvaluator(certificates: [
Certificates.stackExchange
])
]
let session: Session
private init() {
session = Session(
serverTrustManager: ServerTrustManager(evaluators: evaluators)
)
}
private static let shared = AFsession()
static func request(_ convertible: URLRequestConvertible) -> DataRequest {
return shared.session.request(convertible)
}
}
struct Certificates {
static let stackExchange =
Certificates.certificate(filename: "mycert")
private static func certificate(filename: String) -> SecCertificate {
let filePath = Bundle.main.path(forResource: filename, ofType: "cer")!
let data = try! Data(contentsOf: URL(fileURLWithPath: filePath))
let certificate = SecCertificateCreateWithData(nil, data as CFData)!
return certificate
}
}
执行 :
AF.request(URL, method: .post, parameters: [:], encoding: body, headers: header)
.responseString { response in
guard response.result.error == nil else {
// got an error in getting the data, need to handle it
print("error calling POST on \(URL)")
print(response.result.error!)
return
请求参数有错误。method:.post 被视为一个额外的参数。编辑:使用 AF.request 的标准实现没有问题任何帮助表示赞赏
解决方案
您需要使用Session
您创建的 aServerTrustManager
来提出您的请求,它不适用于AF.request
.
推荐阅读
- python - TWS-API 连接和数据获取需要帮助
- python-3.x - 下载 HTML 时请求进行更改
- php - Supervisor MaxTries 和 Attempts 之间的区别
- python-3.x - xgboost 无法在 Mac 中加载
- sql-server - 存在唯一性约束时对列值重新排序
- python - 有没有办法使用 AWS S3 将 SSEKMSKeyId 和 ServerSideEncryption 传递给 scrapy FilesPipeline?
- android - 应用小部件在省电模式下不更新
- amazon-web-services - 为什么这个项目需要 iam:PassRole?
- python - 从python中的子类调用函数
- java - JSP/Servlet中不同类的TextArea(附加方式)打印输出