Ich arbeite gerade an Xcode 7 beta 6. Ich versuche, eine "DELETE" Anfrage an http://mySubdomain.herokuapp.comApp Transport Sicherheit Xcode 7 beta 6
Der Fehler I erhalten zu senden:
App Transport Security blockiert hat einen unverschlüsselt HTTP (http: //) Ressourcenbelastung, da es unsicher ist. Temporäre Ausnahmen können über die Info.plist-Datei Ihrer App konfiguriert werden.
Fehler beim API-Aufruf: Fehlerdomäne = NSURLErrorDomain Code = -1022 Die Ressource konnte nicht geladen werden, da die App-Transportsicherheitsrichtlinie die Verwendung einer sicheren Verbindung erfordert.
NSLocalizedDescription = Die Ressource konnte nicht geladen werden, da die App-Transport-Sicherheitsrichtlinie die Verwendung einer sicheren Verbindung erfordert., NSUnderlyingError = 0x796f7ef0 {Fehler Domain = kCFErrorDomainCFNetwork-Code = -1022 "(null)"}}
In meinem tatsächlichen API-Aufruf habe ich "https" anstelle von "http" eingegeben und das hat tatsächlich für meine POST-Anfragen funktioniert. Aber die DELETE-Anfrage löst den obigen Fehler aus.
Ich habe hier Lösungen gesehen, die die pList-Datei beinhalten, aber keiner von ihnen hat für mich funktioniert. Ich habe meine Versuche unten aufgelistet.
Erster Versuch:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
Zweiter Versuch:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>herokuapp.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSRequiresCertificateTransparency</key>
<false/>
</dict>
</dict>
</dict>
Und schließlich ich auch alle diese temporäre Schlüssel setzen in etwa so:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>herokuapp.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSTemporaryExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryThirdPartyExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSTemporaryThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSTemporaryThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSRequiresCertificateTransparency</key>
<false/>
<key>NSTemporaryRequiresCertificateTransparency</key>
<false/>
</dict>
</dict>
</dict>
Alles ohne Glück! Ich bekomme immer den gleichen Fehler. Die DELETE-Anfrage ist korrekt formatiert, denn wenn ich es manuell von Postman aus mache, bekomme ich das gewünschte Ergebnis. Hier
ist, was meine eigentliche API-Aufruf Methode aussieht, nur für den Fall könnte es ein Problem sein, hier:
class func makeDELETEALLRequest(completion: (error:Bool) -> Void) {
let session = NSURLSession.sharedSession()
let url = NSURL(string:"https://mysubdomain.herokuapp.com/42kh24kh2kj2g24/clean")
let request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "DELETE"
let task = session.dataTaskWithRequest(request) { (data, response, error) -> Void in
if (error != nil) {
print("Error making API call: \(error!)")
completion(error: true)
} else {
let HTTPResponse = response as! NSHTTPURLResponse
let statusCode = HTTPResponse.statusCode
if (statusCode == 200){
print("Successfully deleted!")
completion(error: false)
} else {
print("Different status code: \(statusCode)")
completion(error: true)
}
}
}
task.resume()
}
Noch einmal, ich bin mit Xcode 7 Beta 6.
ÜBER MEINE AUSGEWÄHLTE ANTWORT Die Antwort, die ich war richtig für mich als richtig ausgewählt, weil ich alle diese Änderungen an der falschen pList Datei in meinem Projekt gemacht und die Antwort war der einzige, der die Möglichkeit angesprochen. Die Lösungen, die von den anderen Antworten angeboten werden, sind nicht falsch, also sollten andere Leute, die dieses Problem erfahren, es versuchen, da sie gültig sind. Ich hoffe, das hilft jedem, der ähnliche Probleme hat.
Ein Leitfaden überprüfen Akzeptanz von Web-URL https://medium.com/@Mrugraj/app-transport-security-b7910c4fc70f zur Verfügung steht. Dies könnte helfen, für die Zukunft zu verstehen – Mrug
Erste Versuch Arbeit in meinem Fall irgendwie finde ich es hilfreich, so dass ich Daumen hoch für Sie haben –