Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

xCode 9 - iOS 11: NSURLConnection - sendAsynchronousRequest fails

I just downloaded the latest version of xCode (9.0 beta (9M136h)).

However, when I try to make a request to my server in iOS 11 simulator (Using NSURLConnection sendAsynchronousRequest), an error is received:

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9807) NSURLConnection finished with error - code -1202

NSError object contains the message - @"NSLocalizedDescription" : @"The certificate for this server is invalid. You might be connecting to a server that is pretending to be “***” which could put your confidential information at risk."

The plist contains:

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

so it is not the problem in this case (I guess)

Needless to say that it is working in iOS 10/9/8

Any suggestions?

Thanks in advance!

like image 223
dor506 Avatar asked Jun 22 '17 11:06

dor506


2 Answers

You need to allow your application to run HTTP (no S) connections. By default, Apple only allows HTTPS:

  1. go to your info.plist

    here

  2. then press the plus icon on any of them

  3. Search for "App Transport Security Settings" here

  4. click the little arrow to the left and find "Allow arbitrary loads", by default it is set to "NO" change it to "YES"

like image 196
Carter4502 Avatar answered Jan 12 '23 18:01

Carter4502


For all of you who get this error in iOS 11, please make sure you're working against valid (secured) certificate in your server.

In our case, the certificate wasn't strict enough.

Once our server guy integrated new valid certificate, the problem has gone.

One way to check if the certificate is secured, is to past the problematic link in the browser.

As a result, you might see that the connection is not secured:

enter image description here

like image 40
dor506 Avatar answered Jan 12 '23 20:01

dor506