Как я могу добавить NSAppTransportSecurity в мой файл info.plist?
https://developer.apple.com/videos/wwdc/2015/?id=711 @ 5: 55
Я не могу добавить это в мой info.plist. Там нет никакой ценности это. Я использую XCode Version 7.0 beta (7A121l) и тестирую на iOS9.
Поскольку я не могу конкретно указать, какой URL-адрес мне нужен, как показано на видео, я продолжаю получать сообщение "App Transport Security заблокировал загрузку ресурса HTTP (http://) в виде открытого текста, поскольку он небезопасен. Временные исключения можно настроить с помощью приложения". Info.plist file "ошибки.
Тем не менее, я не могу его настроить. Есть идеи?
13 ответов
С этим попробуй --- у меня работало в Xcode-beta 4 7.0
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>yourdomain.com</key>
<dict>
<!--Include to allow subdomains-->
<key>NSIncludesSubdomains</key>
<true/>
<!--Include to allow HTTP requests-->
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<!--Include to specify minimum TLS version-->
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
Также еще один вариант, если вы хотите отключить ATS, вы можете использовать это:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key><true/>
</dict>
Но это совсем не рекомендуется. Сервер должен иметь сертификаты SSL, чтобы не было утечки конфиденциальности.
Вы должны добавить только ключ NSAllowsArbitraryLoads к YES в словаре NSAppTransportSecurity в вашем файле info.plist.
Например,
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
Это не сработало для меня, но это помогло:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key><true/>
</dict>
Просто чтобы уточнить... Вы всегда должны использовать httpS
Но вы можете обойти это, добавив исключение:
Xcode 8.2, iOS 10
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
Обновить ответ (после wwdc 2016):
IOS apps will require secure HTTPS connections by the end of 2016
App Transport Security, или ATS, является функцией, которую Apple представила в iOS 9. Когда ATS включена, она заставляет приложение подключаться к веб-службам через соединение HTTPS, а не через незащищенный HTTP.
Однако разработчики могут отключить ATS и разрешить своим приложениям отправлять данные через HTTP-соединение, как указано в ответах выше. В конце 2016 года Apple сделает ATS обязательной для всех разработчиков, которые надеются представить свои приложения в App Store. ссылка на сайт
Откройте файл info.plist вашего проекта любым редактором по вашему выбору, затем добавьте этот код в конец файла перед последним
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>com</key>
<dict>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>net</key>
<dict>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>org</key>
<dict>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
Это позволит подключиться к.com .net .org
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>uservoice.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
В командной строке оболочки Mac используйте следующую команду:
plutil -insert NSAppTransportSecurity -xml "<array><string> hidden </string></array>" [location of your xcode project]/Info.plist
Команда добавит все необходимые значения в ваш plist-файл.
Xcode 9.2, Swift 4, у меня это работает.
<key>App Transport Security Settings</key>
<dict>
<key>Allow Arbitrary Loads</key>
<true/>
</dict>
Одна плохая новость для разработчиков, использующих NSAppTransportSecurity.
UPDATE:
[Apple will require HTTPS connections for iOS apps by the end of 2016]
Чтобы объяснить немного больше об ответе ParaSara: Безопасность транспорта приложений станет обязательной, и попытка отключить ее может привести к отклонению вашего приложения.
Как разработчик, вы можете отключить безопасность App Transport, если ваш сетевой код не работает с ним, и вы хотите продолжить другие разработки, прежде чем исправлять какие-либо проблемы. Скажем, в команде из пяти человек четверо могут продолжать работать над другими вещами, пока один решает все проблемы. Вы также можете отключить защиту App Transport в качестве средства отладки, если у вас есть проблемы с сетью, и вы хотите проверить, не вызваны ли они безопасностью App Transport. Как только вы знаете, вы должны немедленно включить его снова.
Решение, которое вы должны использовать в будущем, заключается в том, чтобы вообще не использовать http, если только вы не используете сторонний сервер, который не поддерживает https. Если ваш собственный сервер не поддерживает https, у Apple возникнет проблема с этим. Даже со сторонними серверами я бы не поспорил, что Apple это примет.
То же самое с различными проверками безопасности сервера. В какой-то момент Apple примет только оправданные исключения.
Но, в основном, учтите следующее: вы ставите под угрозу конфиденциальность ваших клиентов. Это большое нет-нет в моей книге. Не делай этого. Исправьте ваш код, не спрашивайте разрешения на запуск небезопасного кода.
XCODE 8, Swift 3: Вам нужно добавить строку: **
"Настройка безопасности приложения транспорта"
** в info.plist внутри информационного списка недвижимости.