【问题标题】:Error Domain=NSURLErrorDomain Code=-1202 "The certificate for this server is invalid错误域=NSURLErrorDomain 代码=-1202 “此服务器的证书无效
【发布时间】:2022-07-25 20:18:53
【问题描述】:

我试图在我的家庭网络中调用我的 api,但由于某种原因,我收到以下错误消息:

finished with error [-1202] Error Domain=NSURLErrorDomain Code=-1202“此服务器的证书无效。您可能正在连接到伪装成“192.168.179.185”的服务器,这可能会放入您的机密信息有风险。”

我尝试了一些解决方案,但没有一个适合我的代码。

import SwiftUI
import EFQRCode

struct ShowQRCodeView: View {
    //@Binding var isLoggedIn : Bool
    @Binding var deviceId : String
    @Binding var apiKey : String
    @Binding var userId : String
    @Binding var employeeId : Int
    @State private var x = UUID().uuidString
    @State var users = [User]()

var body: some View {
    VStack(){
        Form{
            Section("QR-Code"){
                if let cgImage = EFQRCode.generate(for: deviceId) {
                    Image(uiImage: UIImage(cgImage: cgImage)).resizable().frame(width: 150, height: 150)
                }
                Button("Login"){
                    Task{
                        await doHTTPUserCall()
                    }
                }
            }
        }.frame(height: 180)
        
    }.onAppear {
        if (deviceId == "") {
            deviceId = x // Could change here
        }
        
        
    }
}



func doHTTPUserCall() async {
    
    var url = "https://192.168.179.185:8090/CC0001/BE/admin/api/v1/employee/deviceid/"
    url += String(deviceId)
    guard let reqUrl = URL(string: url) else {
        print("Invalid URL")
        return()
    }
    var req = URLRequest(url: reqUrl)
    req.httpMethod = "GET"
    
    
    let formatter = DateFormatter()
    formatter.dateFormat = "yyyy-MM-dd"
    formatter.timeZone = TimeZone(abbreviation: "ETC")
    
    
    
    let task = URLSession.shared.dataTask(with: req) { data, response, error in
        if let data = data {
            do{
                let decoder = JSONDecoder()
                decoder.dateDecodingStrategy = .formatted(formatter)
                users = try decoder.decode(Array<User>.self, from: data)
                
            } catch{
                print(error)
            }
        } else if let error = error {
            print("HTTP Request Failed \(error)")
        }
        if let response = response as? HTTPURLResponse {
                print("Response HTTP Status code: \(response.statusCode)")
            }
    }
    task.resume()
    
}
 
}

我认为这与自签名 ssl 证书有关。
不胜感激,谢谢

【问题讨论】:

    标签: swift self-signed self-signed-certificate


    【解决方案1】:

    将此添加到您的 info.plist 中,您的问题将得到解决。

         <key>NSAppTransportSecurity</key>
      <dict> 
         <key>NSAllowsArbitraryLoads</key>
         <true/>
      </dict>
    

    PS:出现此问题是因为托管 api 的服务器没有 SSL 证书,此密钥将绕过该证书。

    【讨论】:

      猜你喜欢
      • 2020-02-03
      • 1970-01-01
      • 2017-05-04
      • 2013-09-16
      • 2017-06-01
      • 2017-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多