2015-07-27 20 views
12

Aktualizuję moją aplikację, aby uwzględnić nową wersję Apple ATS. Bez żadnych zmian w Plist-Info poniższy kod generuje błąd w sendSynchronousRequest() w symulatorze wanilla iOS 9.Żądanie HTTPS w systemie iOS 9: NSURLSession/NSURLConnection Wczytanie HTTP nie powiodło się (kCFStreamErrorDomainSSL, -9802)

NSURL *url =[NSURL URLWithString:@"https://Google.com"]; 
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]init]; 
[request setHTTPMethod:@"GET"]; 
[request setURL:url]; 

NSURLResponse *urlResponse = nil; 
NSError *error = nil;  
NSData *reponse = [NSURLConnection sendSynchronousRequest:request 
             returningResponse:&urlResponse 
                error:&error]; 

Błąd:

NSURLSession/NSURLConnection HTTP obciążenie zawiodły (kCFStreamErrorDomainSSL, -9802)

jakieś przemyślenia co do tego, co może być za ten problem?

Ps: Rozumiem, że NSURLConnection jest przestarzałe. Ale ta inwokacja działa, jeśli dodam AllowArbitraryLoads w Plist.

+1

Zajrzyj na forach Apple, w sieci. Powiedziałem o tym i dostałem dobrą odpowiedź, podobnie jak inni. –

+0

Nie można znaleźć. Czy możesz udostępnić link? –

+3

To jest link: https://forums.developer.apple.com/thread/6452 –

Odpowiedz

13

NSURLSession/NSURLConnection Wczytanie HTTP nie powiodło się (kCFStreamErrorDomainSSL, -9802) odpowiada serwerowi, który nie obsługuje "Forward Secrecy".

Aby obejść ten problem, należy dodać wyjątek domeny .plist plik następująco:

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSExceptionDomains</key> 
    <dict> 
     <key>test.testdomain.com</key> 
     <dict> 
      <key>NSIncludesSubdomains</key> 
      <true/> 
      <key>NSTemporaryExceptionRequiresForwardSecrecy</key> 
      <false/> 
     </dict> 
    </dict> 
</dict> 
+0

Po dodaniu powyższego kodu w plist .. otrzymuję ten sam błąd NSURLSession/NSURLConnection Nieudane ładowanie HTTP (kCFStreamErrorDomainSSL, -9802) błąd = Opcjonalnie (domena błędu = NSURLErrorDomain Code = -1200 "Wystąpił błąd SSL i bezpieczne połączenie do serwera nie można utworzyć. " – Singapore

+0

Nadal dostaję ten błąd zbyt. Wszelkie pomysły? – Steeve17

+0

Czy to jest twoja odpowiedź jest poprawna? – user3182143

0

Zgodnie z tym: https://forums.developer.apple.com/message/36842#36842

Prawidłowe wyjątek naprawić obciążenie HTTP nie powiodło się (kCFStreamErrorDomainSSL, -9802) to:

NSExceptionAllowsInsecureHTTPLoads 
+1

Ten przypadek jest interesujący - dziękuję za udostępnienie. W moim przypadku błąd ten spowodowany był przez serwer nieobsługujący tajności przekazywania. Ostatecznie naprawiliśmy listę zestawów szyfrów w naszym serwerze, aby obsługiwać FwSec i to naprawiło aplikację (i wyjątek "..ExceptionRequiresForwardSecrecy" nie był już potrzebny). –

+0

Nasz przypadek był spowodowany posiadaniem certyfikatu z podpisem własnym w naszej testowej maszynie wirtualnej. – spirographer

+0

@spirographer - więc w jaki sposób udało ci się uzyskać certyfikat z podpisem własnym na maszynie wirtualnej? –

7

Dodaj nowy wiersz do pliku plist.

Add a new row in your plist file

+1

Idealny. Pracował dla mnie. Aktualizacja obrazu była łatwiejsza. Dzięki: D – Reanimation

0

Dodaj następujące elementy do pliku info.plist. I zamień "Moja_Base_Url.com" na bazowy adres URL linku do usługi internetowej. To powinno wystarczyć.

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSExceptionDomains</key> 
    <dict> 
     <key>My_Base_Url.com</key> 
     <dict> 
      <key>NSExceptionAllowsInsecureHTTPLoads</key> 
      <true/> 
      <key>NSExceptionMinimumTLSVersion</key> 
      <string>TLSv1.2</string> 
      <key>NSExceptionRequiresForwardSecrecy</key> 
      <true/> 
      <key>NSIncludesSubdomains</key> 
      <true/> 
      <key>NSRequiresCertificateTransparency</key> 
      <false/> 
      <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key> 
      <false/> 
      <key>NSThirdPartyExceptionMinimumTLSVersion</key> 
      <string>TLSv1.2</string> 
      <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> 
      <true/> 
     </dict> 
    </dict> 
</dict> 
Powiązane problemy