NSURLSession/NSURLConnection HTTP Last nicht auf iOS 9
Versucht meine bestehende app auf iOS9 aber immer Fehler bei der Verwendung AFURLSessionManager
.
__block NSURLSessionDataTask *task = [self.sessionManager dataTaskWithRequest:request completionHandler:^(NSURLResponse * __unused response, id responseObject, NSError *error) {
if (error) {
} else {
}
}];
[task resume];
Bekomme ich die folgende Fehlermeldung:
Error Domain=NSURLErrorDomain Code=-999 "cancelled.
Auch immer folgenden Protokolle:
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9824
CFNetwork SSLHandshake failed (-9824)
Update:
Ich habe mehrere updates zu meiner Lösung:
NSURLSession/NSURLConnection HTTP Last nicht auf iOS 9
Sie sind sicher, dass der Fehler passiert in der ersten Zeile?
Ich hatte das gleiche Problem. Dies schien cover die Ausgabe: stackoverflow.com/questions/30720813/...
Ich hatte das gleiche Problem. Dies schien cover die Ausgabe: stackoverflow.com/questions/30720813/...
InformationsquelleAutor Tariq | 2015-06-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lösung gefunden:
In iOS9, ATS erzwingt best practices bei der Netzwerk-Aufrufe, einschließlich der Verwendung von HTTPS.
Von Apple Dokumentation:
ATS verhindert versehentliche Offenlegung, bietet eine sichere default-Verhalten, und ist leicht zu verabschieden. Sollten Sie ATS so bald wie möglich, unabhängig davon, ob Sie bei der Erstellung einer neuen app oder die Aktualisierung einer vorhandenen. Wenn Sie die Entwicklung einer neuen app, sollten Sie HTTPS verwenden ausschließlich. Wenn Sie eine bestehende app, Sie verwenden HTTPS, so viel wie Sie können, jetzt, und erstellen Sie einen plan für die Migration der rest der app so bald wie möglich.
In der beta 1 derzeit gibt es keine Möglichkeit zu definieren, diese in der info.plist. Die Lösung ist, um es manuell hinzufügen:
Update1: Dies ist eine vorübergehende Lösung, bis Sie bereit sind zu übernehmen iOS9 ATS Unterstützung.
Update2: Für mehr details bitte folgenden link:
http://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/
Update3: Wenn Sie versuchen, eine Verbindung zu einem host - (YOURHOST.COM), die nur TLS 1.0
Fügen Sie diese zu Ihrem app-Info.plist
Sie werden nur in der Lage zu bekommen, eine ganze app ausgeschlossen, die auf einer Fall-zu-Fall-basis durch Apple. Ich gehe davon aus, wenn Apple segnet Ihre app mit dieser Fähigkeit, Sie weisen Sie diesem Schlüssel. Erwarten, dass Apple tun dies nur selten.
Bitte, bitte, bitte, bitte, bitte - nicht nur die Ausnahme hinzufügen, um Ihre plist und verschieben auf "nur weil es funktioniert". Betrachten Sie die Sicherheit Ihrer Nutzerdaten und implementieren von SSL und anderen security-best-practices.
Ich verstehe es besser, die Unterstützung von TLS 1.2, statt nur das deaktivieren der ATS. Aber was können Sie tun, wenn Sie verlassen sich auf eine 3rd-party-API/web service. Ich kann Sie nicht zwingen, zu aktualisieren, so was kann ich tun??
Es gibt einen subtilen Fehler in dieser Antwort:
NSTemporaryExceptionMinimumTLSVersion
werden muss, z.B. TLSv1.0 statt 1.0, siehe NSAppTransportSecurity Ausnahme Domänen-dictionary-keysInformationsquelleAutor Tariq
Umgang mit der SSL in iOS9,Eine Lösung wie:
Als Apple sagen :
iOS 9 und OS x 10.11 erfordern TLSv1.2 SSL für alle hosts, die Sie planen, zum anfordern von Daten aus, wenn Sie angeben, Ausnahme Domänen in Ihrem app-Info.plist-Datei.
Die syntax für die Info.plist-Konfiguration sieht so aus:
Wenn Ihre Anwendung (ein web-browser von Drittanbietern, zum Beispiel) braucht, um eine Verbindung zu beliebigen hosts konfigurieren Sie es wie folgt:
Wenn du Schwierigkeiten hast, dies zu tun, ist es wahrscheinlich am besten aktualisieren Sie Ihre Server mit TLSv1.2 und SSL, wenn Sie es nicht schon getan hast. Dies sollte als eine vorübergehende Lösung.
Als heute, die Vorabversion der Dokumentation macht keine Erwähnung von jeder dieser Optionen für die Konfiguration in irgendeiner spezifischen Weise. Sobald es funktioniert, ich werde zu aktualisieren, die Antwort einen link zu der entsprechenden Dokumentation.
Für weitere Informationen ,gehen Sie zuiOS9AdaptationTips
Ich habe nur hinzuzufügen viel Glück mit dem unteren Beispiel, wo Sie NSAllowsArbitraryLoads zu wahren. Mein server ist mit TLS v1.2 ausschließlich und ich habe noch zu tun, um es zu arbeiten. Sehr frustrierend.
So gibt es Abhilfe, die ich verwenden könnte, um zu wissen, für sicher, dass meine neue app genehmigt zu bekommen, im App Store, wie z.B. ein proxy-service?
InformationsquelleAutor ElonChan
Apple Technote zur App-Sicherheit für den Transport sehr praktisch ist; es half uns dabei, eine sichere Lösung für unser Problem.
Hoffentlich jemand anderes helfen. Wir hatten Probleme mit der Verbindung zum Amazon S3-URLs, die anscheinend vollkommen gültig, TLSv12 HTTPS-URLs. Stellt sich heraus, wir hatten zu deaktivieren
NSExceptionRequiresForwardSecrecy
zu aktivieren, noch eine Handvoll von Chiffren, S3 verwendet.In unserem
Info.plist
:Dies löst das problem hatte ich auch, in verschiedenen Fällen kann es erforderlich, verschiedene Einstellungen durch. Die gute Nachricht ist, dass er technote enthält auch Informationen darüber, wie zu verwenden nsurl zu helfen, finden Sie die korrekten Einstellungen im Allgemeinen.
Ich brauchte, um das gleiche zu tun für cloudfront.net wenn ich eine CDN-vor Amazon S3.
InformationsquelleAutor Ben Kreeger
Wenn Sie dieses problem mit Amazon S3 als mich, versuchen, fügen Sie diese auf Ihre info.plist als direktes Kind von Ihrer top-level-tag
Finden Sie mehr info auf:
http://docs.aws.amazon.com/mobile/sdkforios/developerguide/ats.html#resolving-the-issue
InformationsquelleAutor David Cespedes
Fand ich die Lösung von hier. Und seine Arbeit für mich.
Überprüfen Sie diese, es Ihnen helfen kann.
InformationsquelleAutor Ashvin Ajadiya
Fügen Sie einfach die folgenden Felder in Ihre .plist-Datei
Syntax sieht wie folgt aus:
InformationsquelleAutor geet Sebastian
Lösen NSURLConnection Http laden fehlgeschlagen, Fehler Fügen Sie Einfach folgenden Dict-in info.plist:
InformationsquelleAutor Sakir Sherasiya
Update:
Als Xcode-7.1, die Sie nicht brauchen, um manuell eingeben, die
NSAppTransportSecurity
Wörterbuch in derinfo.plist
.Wird es jetzt mit autocomplete für Sie ist, erkennen, es ist ein Wörterbuch, und dann AutoVervollständigen die
Allows Arbitrary
Belastungen Stand.info.plist screenshot
InformationsquelleAutor Ben
Habe ich es gelöst mit dem hinzufügen von ein paar Schlüssel in info.plist. Die Schritte, die ich gefolgt sind:
Öffnete ich meine Projekt-info.plist-Datei
Hinzugefügt, ein Schlüssel namens NSAppTransportSecurity als ein Wörterbuch.
Hinzugefügt einen Unterschlüssel namens NSAllowsArbitraryLoads als Boolean und setzen Sie seinen Wert auf " JA " aus, wie folgende Bild.
geben Sie eine Bild Beschreibung hier
Reinigen Sie das Projekt, und Nun Läuft Alles gut, so wie vorher.
Ref-Link: https://stackoverflow.com/a/32609970
InformationsquelleAutor tania_S
Dies ist was für mich gearbeitet, wenn ich hatte diesen Fehler:
InformationsquelleAutor KVISH
Können Sie versuchen, fügen Sie diese Funktion in der Datei RCTHTTPRequestHandler.m
- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler
{
completionHandler(NSURLSessionAuthChallengeUseCredential, [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]);
}
InformationsquelleAutor eliprodigy
Zusätzlich zu den oben genannten Antworten ,überprüfen Sie Ihre url
InformationsquelleAutor Vaishnavi