Mam problem podczas wykonywania wywołań API do zaplecza moich aplikacji, teraz każde połączenie wyświetla monit
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;
}
Jestem trochę zagubiony, ponieważ nie jestem pewien, co to powoduje, ani co robi CredStore. Jaki jest cel CredStore w iOS?
Odpowiedzi:
Ten błąd występuje podczas próby pobrania adresu
URLCredential
zURLCredentialStorage
nieznanego źródłaURLProtectionSpace
. na przykładprodukuje
Podaj poświadczenie dla obszaru ochrony:
a błąd znika przy następnej próbie pobrania poświadczenia.
Magazyn danych logowania w systemie iOS umożliwia użytkownikom bezpieczne przechowywanie poświadczeń opartych na certyfikatach lub hasłach na urządzeniu tymczasowo lub na stałe w pęku kluczy.
Podejrzewam, że masz jakiś rodzaj uwierzytelniania na serwerze zaplecza i ten serwer żąda żądania uwierzytelnienia w Twojej aplikacji (dla której nie ma poświadczeń).
Prawdopodobnie można to bezpiecznie zignorować, ponieważ zwrócenie nil z wartości
URLCredentialStorage
jest prawidłową odpowiedziąźródło
Nie jestem pewien, dlaczego otrzymujemy ten błąd podczas wykonywania żądań z Alamofire, ale jeśli wykonujesz żądania API z jakimś tokenem w nagłówkach HTTP, być może w ogóle nie potrzebujesz magazynu danych logowania. Więc możemy go wyłączyć na naszą prośbę:
Żadnych błędów po takiej zmianie.
źródło
To jest błąd transportu, dodajmy takie uprawnienia do transportu w pliku plist:
Bądź ostrożny ponieważ umożliwia to połączenie z dowolnym serwerem z Twojej aplikacji. Przeczytaj więcej o bezpieczeństwie transportu aplikacji, zanim przejdziesz dalej. Zobacz komentarz @kezi
źródło
Ten sam problem występuje i stwierdziłem, że jeśli adres URL Twojego interfejsu API nie zawiera znaku „/” na końcu adresu URL, system iOS nie wysyła wartości „Autoryzacji” do serwera. Dzięki temu w konsoli pojawi się taka wiadomość jak w pytaniu.
Po prostu dodaj „/” na końcu adresu URL
źródło
Edytowałem ciąg zawierający adres URL, aby rozwiązać ten problem:
źródło
Jeśli pojawi się ten błąd, podczas używania AVPlayera, po prostu wywołaj .play () w głównym wątku
źródło
Przyczyną pojawienia się tego błędu było przypadkowe użycie dwóch spacji między „Okazicielem” a tokenem dostępu w nagłówku autoryzacji.
Błędny:
Poprawny:
Prosty błąd, ale znalezienie go zajęło trochę czasu.
źródło
W moim przypadku nie inicjowałem Stripe SDK z kluczem API.
W przypadku dowolnej operacji Stripe możemy wydrukować dziennik błędów, jest łatwy do zrozumienia.
źródło
OK, miałem ten błąd i walczyłem z nim przez długi czas (lata) podczas interakcji z moją aplikacją Ruby on Rails.
Miałem domyślne poświadczenia skonfigurowane zgodnie z opisem w zaakceptowanej odpowiedzi, ale nadal otrzymałem błąd i polegałem na odpowiedzi didReceiveChallenge w celu dostarczenia poświadczeń - na szczęście to działało jako obejście.
Ale! Właśnie znalazłem rozwiązanie!
Pracowałem nad przeczuciem, że pola protectedSpace nie odpowiadają wyzwaniu autoryzacji z serwera Ruby on Rails - i zajrzałem do pola dziedziny, które wydawało się być jedynym, które pozostawało niezdefiniowane.
Zacząłem od wydrukowania nagłówków odpowiedzi serwera i chociaż mogłem je sprawdzić, nie zawierały one pola WWW-Authorization, które zawierałoby pole realm.
Pomyślałem, że może to być spowodowane tym, że moja aplikacja Rails nie określała dziedziny, więc zacząłem przyglądać się stronie Railsów.
Odkryłem, że mogę określić w wezwaniu dziedzinę,
... którego używam do podstawowego uwierzytelniania HTTP.
Nie określałem jeszcze domeny, więc dodałem,
Następnie dodałem odpowiedni ciąg do protectionSpace,
Voila! To zadziałało i już nie rozumiem,
Nawet po określeniu dziedziny w aplikacji Rails, nadal nie widzę jej przekazywanej w nagłówku HTTP, nie wiem dlaczego, ale przynajmniej działa.
źródło
Błąd może być również spowodowany polityką bezpieczeństwa treści (CSP), która może być zbyt restrykcyjna. W naszym przypadku potrzebowaliśmy CSP, który jest mniej lub bardziej otwarty i pozwala na wszystko. Pamiętaj, że otwarcie CSP może stanowić poważny problem z bezpieczeństwem (w zależności od tego, co dokładnie robisz w aplikacji).
źródło
Wystąpił ten problem, gdy próbowałem otworzyć stronę http w widoku sieci Web. Ale ta strona zawierała wyskakujące okienko, które zostało otwarte jako pierwsze.
Gdy zespół zaplecza usunął to okienko, wszystko stało się OK.
źródło
źródło