使用HTTPS api调用时出现“传输安全性已阻止明文HTTP”错误

问题描述

我在xcode中遇到此错误:“应用传输安全性由于不安全,阻止了明文HTTP(http://)资源加载。可以通过应用的Info.plist文件配置临时异常。”

关键是我在api调用中使用了https 。我根本不使用http。但是仍然出现此错误

我还在info.plist文件添加了“应用程序传输安全设置:允许任意加载:是”。

这是代码段:

import Foundation

enum MovieError: String,Error  {
    case responseProblem
    case decodingProblem
    case encodingProblem
}

struct NetworkManager {
    let baseURL = "https://ee15abd0abc1.ngrok.io/api"
    let url: URL
    let API_KEY = ""
    
    init(endPoint: String) {
        let resourceURL = "\(baseURL)/\(endPoint)"
        guard let url = URL(string: resourceURL) else { fatalError() }
        self.url = url
    }
    
    func login(_ login: Login,completion: @escaping(Result<LoginToken,MovieError>) -> Void) {
        
        do {
            var urlRequest = URLRequest(url: self.url)
            urlRequest.httpMethod = "POST"
            urlRequest.addValue("application/json",forHTTPHeaderField: "Content-Type")
            urlRequest.httpBody = try JSONEncoder().encode(login)
            
            let dataTask = URLSession.shared.dataTask(with: urlRequest) { (data,response,error) in
                
                guard let httpResponse = response as? HTTPURLResponse,httpResponse.statusCode == 200,let jsonData = data else {
                    completion(.failure(.responseProblem))
                    return
                }
                
                do {
                    let loginToken = try JSONDecoder().decode(LoginToken.self,from: jsonData)
                    completion(.success(loginToken))
                } catch {
                    completion(.failure(.decodingProblem))
                }
            }
            
            dataTask.resume()
        } catch {
            completion(.failure(.encodingProblem))
        }
    }
}

解决方法

您需要检查这些设置enter image description here

https://useyourloaf.com/blog/app-transport-security/