У меня возникла проблема при выполнении вызовов API к серверной части моих приложений, теперь каждое соединение запрашивает
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;
}
Я немного растерялся, так как не уверен, что вызывает это, или что вообще делает CredStore. Какой цели служит CredStore в iOS?
Ответы:
Эта ошибка возникает при попытке получить
URLCredential
fromURLCredentialStorage
для неизвестногоURLProtectionSpace
. напримерпроизводит
Дайте ему учетные данные для области защиты:
и ошибка исчезнет в следующий раз, когда вы попытаетесь получить учетные данные.
Хранилище учетных данных на iOS позволяет пользователям безопасно хранить учетные данные на основе сертификатов или паролей на устройстве временно или постоянно в связке ключей.
Я подозреваю, что у вас есть какая-то аутентификация на вашем внутреннем сервере, и этот сервер запрашивает проверку подлинности для вашего приложения (для которого нет учетных данных).
Его, вероятно, можно безопасно проигнорировать, так как возврат nil из
URLCredentialStorage
является допустимым ответом.источник
Я не уверен, почему мы получаем эту ошибку при выполнении запросов с помощью Alamofire, но если вы выполняете запросы API с некоторым токеном в заголовках HTTP, вам может вообще не понадобиться хранилище учетных данных. Поэтому мы можем отключить его по нашему запросу:
После такого изменения ошибок нет.
источник
Это транспортная ошибка, давайте добавим разрешение на транспорт, как это, в файл plist:
Будьте осторожны, так как это позволяет подключиться к любому серверу из вашего приложения. Прежде чем продолжить, прочтите больше о безопасности транспорта приложений. См. Комментарий @kezi
источник
Эта же проблема случается со мной, и я обнаружил, что если ваш URL-адрес API не содержит «/» в конце URL-адреса, то iOS не отправляет значение «Авторизация» на сервер. Из-за чего вы увидите в консоли сообщение, подобное размещенному в вопросе.
Так что просто добавьте "/" в конец URL
источник
Я отредактировал строку, содержащую URL-адрес, чтобы исправить эту проблему:
источник
Если вы получаете эту ошибку при использовании AVPlayer, просто вызовите .play () в основном потоке
источник
Причина, по которой я получаю эту ошибку, связана с тем, что я случайно использовал два пробела между «предъявителем» и токеном доступа в моем заголовке авторизации.
Неправильно:
Верный:
Простая ошибка, но потребовалось время, чтобы ее найти.
источник
В моем случае я не инициализировал Stripe SDK с помощью ключа API.
В случае любой операции Stripe мы можем распечатать журнал ошибок, его легко понять.
источник
Хорошо, у меня была эта ошибка, и я долго (годы) боролся с ней при взаимодействии с моим приложением Ruby on Rails.
У меня были учетные данные по умолчанию, настроенные, как описано в принятом ответе, но все же возникла ошибка, и я полагался на ответ didReceiveChallenge для предоставления учетных данных - к счастью, это сработало.
Но! Я только что нашел решение!
Я работал с подозрением, что поля protectedSpace не соответствуют запросу авторизации с сервера Ruby on Rails - и я заглянул в поле области, которое, казалось, было единственным, которое оставалось неопределенным.
Я начал с распечатки заголовков ответов сервера, и хотя мне удалось их изучить, они не включали поле WWW-авторизации, которое могло бы включать поле области.
Я подумал, что это могло быть потому, что мое приложение Rails не определяло область, поэтому я начал смотреть на Rails сторону вещей.
Я обнаружил, что могу указать область в вызове,
... который я использую для аутентификации HTTP Basic.
Я еще не указывал область, поэтому добавил ее,
Затем я добавил соответствующую строку в ProtectionSpace,
Вуаля! Это сработало, и я больше не понимаю,
Даже после указания области в приложении Rails я все еще не вижу, чтобы она была передана в заголовке HTTP, я не знаю почему, но, по крайней мере, это работает.
источник
Ошибка также может быть вызвана политикой безопасности контента (CSP), которая может быть слишком строгой. В нашем случае нам нужен CSP, который более или менее полностью открыт и позволяет все. Имейте в виду, что открытие CSP может стать серьезной проблемой для безопасности (в зависимости от того, что именно вы делаете в приложении).
источник
У меня возникла эта проблема, когда я попытался открыть http-страницу внутри веб-представления. Но на этой странице было всплывающее окно, которое открылось первым.
Когда бэкэнд-команда удалила это всплывающее окно, все стало в порядке.
источник
источник