NSAllowsArbitraryLoads не работает
У меня было рабочее приложение, которое загружает некоторую информацию из домена http. Но после обновления Swift 2.0 и Xcode 7 мое приложение не может подключиться к серверу и загрузить данные json, я получаю "App Transport Security заблокировал загрузку ресурсов HTTP с открытым текстом (http://), так как он небезопасен. Временные исключения можно настроить с помощью информации вашего приложения.plist файл." ошибка.
Я попытался поместить эти строки в свою информацию.файл plist:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
но я получаю ту же ошибку, это не работать. Я всегда получаю нулевые данные из методов загрузки. У кого-нибудь есть такая же ошибка? Спасибо!
EDIT: вот изображение из моей информации.plist file:
9 ответов
Я чувствую себя так глупо. Я добавил ключи для отключения ATS по неправильной информации.файл plist. Вместо того, чтобы добавлять его в вспомогательные файлы/информацию.plist файл, я добавил его на MyAppTests/вспомогательные файлы / информация.plist файл. Не совсем ошибка в Xcode, но ошибка в моем мозгу. Спасибо всем за ответы!
вы можете попробовать использовать
nscurl --ats-diagnostics <your-URL>
в терминале. Это поможет вам найти настройки, которые позволят вашему приложению подключиться к вашему-URL. Это работает только на OSX El Capitan. Проверьте apple technote.
но если вы пробовали NSArbitraryLoads в вашей информации.plist файл, этот диагностический инструмент, вероятно, не поможет вам. Думаю, вы нашли жучок.
у меня была такая же проблема, я пробовал добавлять NSExceptionMinimumTLSVersion
и это работает.
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
Я не уверен, почему это помогает, Но... так и есть! Я надеюсь, что это полезно для кого-то там тоже
в моем случае мне нужно было удалить все другие ключи, такие как" разрешить произвольные нагрузки в веб-контенте "или" Домены исключений", чтобы получить" разрешить произвольную нагрузку "для работы, как это установлено в true в разделе" Настройки безопасности транспорта приложения " в Info.файл plist.
протестировано с помощью XCode 8.2.1, iOS 10.2.
ни одно из предыдущих решений не работало для меня, у меня были nsallowsarbitraryloads установлены в true, но все же HTP не будет работать, осмотревшись, я заметил, что информация.файл plist имеет раздел NSExceptionDomains, поэтому я удалил его для тестирования, и все сработало.
таким образом, кажется, что наличие NSExceptionDomains отменяет NSAllowsArbitraryLoads, надеюсь, это полезно.
Если вам нужно загрузить http://
ресурс только в web (UIWebView/WKWebView/SafariViewController), тогда должно быть достаточно следующего.
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</dict>
вы пытались добавить свой домен, например? Вы должны добавить его в NSAppTransportSecurity
словарь.
<key>NSExceptionDomains</key>
<dict>
<key>abcde.com</key>
<dict>
<key>NSExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
У меня была аналогичная проблема и через некоторое время я понял, что информация.plist файл был поврежден. Я могу только посоветовать проверить xml непосредственно не только редактор plist в xcode.
У меня была та же проблема в Xcode версии 8.3.2 (8E2002) с iOS 10.3. После удаления всех ключей, таких как" разрешить произвольные нагрузки в веб-контенте "или" Домены исключений", ключ" разрешить произвольную нагрузку " работает должным образом. Спасибо @dariukas.