Beim Ausführen von API-Aufrufen für das App-Backend tritt ein Problem auf. Jede Verbindung fordert jetzt dazu auf
CredStore - performQuery - Error copying matching creds. Error=-25300, query={
atyp = http;
class = inet;
"m_Limit" = "m_LimitAll";
ptcl = http;
"r_Attributes" = 1;
srvr = "myappsurl.com";
sync = syna;
}
Ich bin ein wenig verloren, da ich nicht sicher bin, was dies verursacht oder was CredStore überhaupt tut. Welchen Zweck erfüllt CredStore in iOS?
Antworten:
Dieser Fehler tritt auf, wenn versucht wird, einen
URLCredential
vonURLCredentialStorage
für einen Unbekannten abzurufenURLProtectionSpace
. z.Bproduziert
Geben Sie ihm einen Berechtigungsnachweis für den Schutzbereich:
und der Fehler verschwindet, wenn Sie das nächste Mal versuchen, den Berechtigungsnachweis abzurufen.
Durch die Speicherung von Anmeldeinformationen unter iOS können Benutzer zertifikatbasierte oder kennwortbasierte Anmeldeinformationen auf dem Gerät entweder vorübergehend oder dauerhaft im Schlüsselbund speichern.
Ich vermute, dass Sie eine Art Authentifizierung auf Ihrem Backend-Server haben und dieser Server eine Authentifizierungsaufforderung an Ihre App anfordert (für die keine Anmeldeinformationen vorhanden sind).
Es kann wahrscheinlich ignoriert werden, da die Rückgabe von nil von
URLCredentialStorage
eine gültige Antwort istquelle
Ich bin nicht sicher, warum dieser Fehler auftritt, wenn Anforderungen mit Alamofire ausgeführt werden. Wenn Sie jedoch API-Anforderungen mit einem Token in HTTP-Headern ausführen, benötigen Sie möglicherweise überhaupt keinen Speicher für Anmeldeinformationen. So können wir es für unsere Anfrage deaktivieren:
Keine Fehler nach einer solchen Änderung.
quelle
Dies ist ein Transportfehler. Fügen wir die Transportberechtigung wie folgt in die plist-Datei ein:
Seien Sie vorsichtig, da dies die Verbindung zu einem beliebigen Server von Ihrer App aus ermöglicht. Lesen Sie mehr über App Transport Security, bevor Sie fortfahren. Siehe Kommentar von @kezi
quelle
Das gleiche Problem tritt bei mir auf und ich habe festgestellt, dass iOS keinen "Authorization" -Wert an den Server sendet, wenn Ihre API-URL am Ende der URL kein "/" enthält. Aufgrund dessen wird in der Konsole eine Nachricht angezeigt, wie sie in Frage gestellt wurde.
Fügen Sie einfach "/" am Ende der URL hinzu
quelle
Ich habe die Zeichenfolge mit der URL bearbeitet, um dieses Problem zu beheben:
quelle
Wenn Sie diesen Fehler erhalten, rufen Sie bei Verwendung von AVPlayer einfach .play () im Hauptthread auf
quelle
Die Ursache für diesen Fehler war, dass ich versehentlich zwei Leerzeichen zwischen dem "Träger" und dem Zugriffstoken in meinem Autorisierungsheader verwendet habe.
Falsch:
Richtig:
Einfacher Fehler, aber es hat eine Weile gedauert, ihn zu finden.
quelle
In meinem Fall habe ich das Stripe SDK nicht mit dem API-Schlüssel initialisiert.
Im Falle einer Stripe-Operation können wir das leicht verständliche Fehlerprotokoll drucken.
quelle
OK, ich hatte diesen Fehler und habe lange (Jahre) damit gekämpft, als ich mit meiner Ruby on Rails-App interagierte.
Ich hatte Standardanmeldeinformationen eingerichtet, wie in der akzeptierten Antwort beschrieben, habe aber immer noch den Fehler erhalten und mich auf eine didReceiveChallenge-Antwort verlassen, um die Anmeldeinformationen bereitzustellen - zum Glück hat das als Problemumgehung funktioniert.
Aber! Ich habe gerade die Lösung gefunden!
Ich habe an der Vermutung gearbeitet, dass die protectedSpace-Felder nicht mit der Autorisierungsaufforderung vom Ruby on Rails-Server übereinstimmen - und ich habe in das Realm-Feld geschaut, das anscheinend das einzige war, das nicht definiert wurde.
Ich habe zunächst die Server-Antwortheader ausgedruckt, und obwohl ich diese untersuchen konnte, enthielten sie nicht das WWW-Autorisierungsfeld, das das Realm-Feld enthalten hätte.
Ich dachte, das lag vielleicht daran, dass meine Rails-App den Bereich nicht spezifizierte, also fing ich an, die Rails-Seite der Dinge zu betrachten.
Ich fand heraus, dass ich den Bereich im Aufruf an angeben konnte,
... die ich für die HTTP Basic-Authentifizierung verwende.
Ich habe noch keinen Bereich angegeben, also einen hinzugefügt,
Ich habe dann die entsprechende Zeichenfolge zum Schutzbereich hinzugefügt.
Voila! Das hat funktioniert und ich verstehe das nicht mehr,
Selbst nachdem ich den Bereich in der Rails-App angegeben habe, sehe ich ihn immer noch nicht im HTTP-Header übergeben. Ich weiß nicht warum, aber zumindest funktioniert er.
quelle
Der Fehler kann auch durch eine zu restriktive Content Security Policy (CSP) verursacht werden. In unserem Fall brauchten wir einen CSP, der mehr oder weniger vollständig offen ist und alles zulässt. Beachten Sie, dass das Öffnen des CSP ein großes Sicherheitsproblem darstellen kann (je nachdem, was genau Sie in der App tun).
quelle
Ich habe dieses Problem erhalten, als ich versucht habe, eine http-Seite in einer Webansicht zu öffnen. Diese Seite enthielt jedoch ein Popup, das zuerst geöffnet wurde.
Als das Backend-Team dieses Popup entfernte, wurde alles in Ordnung.
quelle
quelle