Как я могу добавить 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]

https://techcrunch.com/2016/06/14/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 внутри информационного списка недвижимости.

Другие вопросы по тегам