如何在iOS中执行不安全的URLSession查询

如何在iOS中执行不安全的URLSession查询,第1张

概述我正在尝试对我运行的网站执行查询.但是,目前,该网站的证书无效(目前有正当理由). 我试图用这个代码查询它: private static func performQuery(_ urlString: String) { guard let url = URL(string: urlString) else { return } print(url) 我正在尝试对我运行的网站执行查询.但是,目前,该网站的证书无效(目前有正当理由).

我试图用这个代码查询它:

private static func performquery(_ urlString: String) {    guard let url = URL(string: urlString) else {        return    }    print(url)    URLSession.shared.dataTask(with: url) {        (data,response,error) in        if error != nil {            print(error!.localizedDescription)        }        guard let data = data else {            return        }        do {            let productDetails = try JsONDecoder().decode([ProductDetails].self,from: data)            dispatchQueue.main.async {                print(productDetails)            }        } catch let JsonError {            print(JsonError)        }    }.resume()}

但是,我得到:

NSURLSession/NSURLConnection http load Failed (kcfStreamErrorDomainSSL,-9813)The certificate for this server is invalID. You might be connecting to a server that is pretending to be “mydomain.com” which Could put your confIDential information at risk.

如何进行不安全的URLSession查询(相当于CURL中的-k)?

我试过设置这些:

<key>NSAppTransportSecurity</key><dict>    <key>NSAllowsArbitraryLoads</key>    <true/>    <key>NSExceptionDomains</key>    <dict>        <key>mydomain.com</key>        <dict>            <key>NSExceptionAllowsInsecurehttpLoads</key>            <true/>            <key>NSIncludesSubdomains</key>            <true/>            <key>NstemporaryExceptionRequiresForwardSecrecy</key>            <false/>            <key>NSThirdPartyExceptionAllowsInsecurehttpLoads</key>            <true/>        </dict>    </dict></dict>

是的,我不打算以不安全的访问方式将其发布到App Store,但是我需要测试代码,现在我们无法获得有效的证书,所以这纯粹是出于开发目的.

解决方法 首先,将会话的委托设置为符合URLSessionDelegate的类,如:

let session = URLSession(configuration: .default,delegate: self,delegateQueue: OperationQueue.main)

在您的类中添加dIDReceiveChallenge方法的实现,该方法符合URLSessionDelegate协议

public func urlSession(_ session: URLSession,dIDReceive challenge: URLAuthenticationChallenge,completionHandler: @escaPing (URLSession.AuthChallengedisposition,URLCredential?) -> VoID) {    completionHandler(.useCredential,URLCredential(trust: challenge.protectionSpace.serverTrust!))}

这将允许通过信任服务器来进行不安全的连接.

警告:请勿在生产应用程序中使用此代码,这是一种潜在的安全风险.

总结

以上是内存溢出为你收集整理的如何在iOS中执行不安全的URLSession查询全部内容,希望文章能够帮你解决如何在iOS中执行不安全的URLSession查询所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1005938.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存