25 Вопрос: Транспортная безопасность заблокировала открытый текст HTTP

вопрос создан в Tue, Jun 6, 2017 12:00 AM

Какие настройки мне нужно установить в моем info.plist, чтобы включить режим HTTP, согласно следующему сообщению об ошибке?

  

Служба безопасности транспорта заблокировала открытый HTTP-ресурс (http: //)   загрузить, так как это небезопасно. Временные исключения могут быть настроены через   файл Info.plist вашего приложения.

 Xcode

Предположим, что мой домен example.com.

    
1390
  1. 2015-09-01 14: 48: 46Z
  2. Примечание для модератора . На этот вопрос уже есть 36 ответов. Прежде чем добавить еще один , убедитесь, что ваше решение новое .
    2016-07-11 17: 45: 05Z
  3. ПРИМЕЧАНИЕ. Решения здесь предлагают отключить ATS (Allow arbitary loads). Вскоре это станет невозможным, поскольку Apple потребуется ATS (изначально конец года - срок был продлен) - developer.apple.com/news/?id=12212016b
    2017-01-03 15: 55: 08Z
  4. 2017-01-04 11: 52: 48Z
  5. @ Jeef, почему вы добавили тег iOS 10? были ли какие-либо дополнительные изменения в iOS 10 в этом отношении? Я чувствую, что это было введено в iOS9, и этого тега должно быть достаточно с точки зрения версий iOS
    2018-09-27 13: 47: 27Z
25 ответов                              25                         

Если вы используете Xcode 8.0 и Swift 3.0 или Swift 2.2 или даже Objective C:

 Введите описание изображения здесь

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>example.com</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>
    
376
2017-11-29 12: 37: 58Z
  1. Почему для NSAllowsArbitraryLoads установлено значение true? Вы подрываете цель ОВД. Также см. Самый опасный код в мире: проверка сертификатов SSL в небраузерном программном обеспечении . Ваше программное обеспечение только что составило список.
    2017-06-06 04: 04: 53Z
  2. @ jww Это цель этого поста. Сайт, к которому мне нужно подключиться для воспроизведения звука, пока не использует HTTPS, и я не пытаюсь ждать.
    2018-07-21 00: 00: 24Z
  3. Это не будет работать в iOS 10.0+ или MacOS 10.12+. На самом деле говорится, что разрешить все произвольные загрузки, КРОМЕ указанных (example.com). Таким образом это сделало бы противоположность того, что желательно. NSAllowsArbirtraryLoads должен быть установлен в false здесь. дополнительная информация: Документы Apple
    2019-03-12 14: 45: 45Z

Использование:

Enter описание изображения здесь

Вы должны установить ключ NSAllowsArbitraryLoads в значение ДА в словаре NSAppTransportSecurity в файле .plist.

Plist конфигурация р>     

917
2016-07-02 19: 04: 55Z
  1. Пусть будет известно: ЭТО ВРЕМЕННОЕ РЕШЕНИЕ! Каждый раз, когда вы используете HTTP через HTTPS, вы открываете устройства своего пользователя. на уязвимости. Конечно, это маловероятно во многих случаях, но этическое программирование - лучшая практика. Просто скажи ... - также +1 за работу (в целях тестирования)
    2015-08-29 17: 37: 29Z
  2. Это НЕ решение - это HACK! Чтобы добавить «исключения» для отдельных доменов, см. Следующий ответ: stackoverflow.com/a/32560433/1103584
    2015-09-16 17: 25: 56Z
  3. Хотя известно, что это решение уязвимо, это only решение, которое я бы порекомендовал во время DEVELOPMENT . Необходимость вводить каждый конкретный домен во время разработки просто глупо (особенно если вы используете сторонние веб-сервисы).
    2015-11-03 11: 42: 13Z
  4. Имя этих ключей теперь изменилось "Настройки безопасности транспорта приложений" в разделе "Разрешить произвольные загрузки"
    2015-12-21 11: 28: 02Z
  5. Почему так много людей против этого решения? Это определенно НЕ взломать! Многие приложения должны общаться с реальным Интернетом, где протокол безопасности не всегда находится под вашим контролем. Например, кажется разумным иметь возможность показывать изображения с других серверов, которые не имеют сертификата SSL.
    2016-04-05 04: 31: 11Z

Вот настройки визуально:

visual настройки для NSAllowsArbitraryLoads в info.plist через графический интерфейс Xcode

    
813
2015-11-14 20: 35: 12Z
  1. Это сработало для меня, в то время как редактирование списков не помогло
    2016-03-03 10: 57: 40Z
  2. У меня нет этой опции.
    2016-03-29 03: 26: 38Z
  3. Если вы откроете свой Info.plist напрямую, вы можете просто добавить словарь NSAppTransportSecurity , а затем создать NSAllowsArbitraryLoads пункт в этом (см. ответ, отредактированный Умаром Фаруком, ниже).
    2016-04-01 15: 40: 03Z
  4. То же самое здесь - домены исключений не работали с 7.3 для меня.
    2016-04-10 05: 15: 00Z
  5. Эта опция не существует - XCode 7.3.1
    2016-06-23 13: 14: 48Z

См. сообщение на форуме Безопасность транспорта приложений? . р>

Также на странице Настройка исключений безопасности транспорта приложений в iOS 9 и OSX 10.11 .

Например, вы можете добавить определенный домен, например:

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>example.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>

Ленивый вариант:

<key>NSAppTransportSecurity</key>
<dict>
  <!--Include to allow all connections (DANGER)-->
  <key>NSAllowsArbitraryLoads</key>
      <true/>
</dict>

Примечание:

info.plist - это файл XML, поэтому этот код можно размещать более или менее в любом месте файла.

    
702
2017-06-06 03: 43: 46Z
  1. у меня не работает с iOS9 beta 3. Есть ли решение?
    2015-07-11 13: 34: 02Z
  2. В бета-версии 4, похоже, тоже не работает.
    2015-07-24 20: 46: 35Z
  3. @ lmiguelvargasf откройте ваш info.plist в текстовом редакторе
    2015-07-30 20: 24: 24Z
  4. Я все еще получаю сообщение об ошибке: домен исключения установлен, а NSAllowsArbitraryLoads имеет значение false Даже если NSAllowsArbitraryLoads установлен в true, ошибка появляется. У кого-нибудь еще есть эта проблема?
    2015-10-13 12: 57: 04Z
  5. По состоянию на 30.01.2016 Apple Doc показывает, что в ключах больше нет Временного слова, например: NSExceptionAllowsInsecureHTTPLoads NSExceptionMinimumTLSVersion Смотрите developer.apple.com/library/prerelease/ios/documentation/…
    2016-01-30 21: 32: 17Z

Это было проверено и работало на начальном этапе iOS 9 GM - это конфигурация, позволяющая определенному домену использовать HTTP вместо HTTPS:

<key>NSAppTransportSecurity</key>
<dict>
      <key>NSAllowsArbitraryLoads</key> 
      <false/>
       <key>NSExceptionDomains</key>
       <dict>
            <key>example.com</key> <!--Include your domain at this line -->
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSTemporaryExceptionMinimumTLSVersion</key>
                <string>TLSv1.1</string>
            </dict>
       </dict>
</dict>

NSAllowsArbitraryLoads должно быть false, поскольку оно запрещает все небезопасное соединение, но список исключений разрешает подключение к некоторым доменам без HTTPS.

    
317
2017-08-15 14: 28: 35Z
  1. ЭТО должно быть помечено как ответ. Протестировано и работает на iOS 9 GM seed, чтобы позволить определенному домену использовать http, не выбирая "ленивый" способ и полностью открывая ваше приложение.
    2015-09-16 17: 18: 02Z
  2. Как мне добавить это в мой info.plist?
    2015-09-20 01: 33: 53Z
  3. Хорошо, я добавил эту запись в свой info.plist и все еще получаю эту ошибку - «App Transport Security заблокировал ресурс HTTP (http: //) в виде открытого текста загрузить, поскольку это небезопасно. Временные исключения можно настроить с помощью файла Info.plist вашего приложения. "
    2015-10-05 16: 57: 49Z
  4. @ RomanShapovalov Категорически не рекомендуется использовать IP-адреса, поскольку все приложения для iOS должны соответствовать IPv6, см. документацию Apple об этом
    2016-09-27 09: 39: 52Z
  5. @ RomanShapovalov Если вам необходимо использовать IP-адрес, попробуйте добавить .xip.io в конец IP-адреса и добавьте xip.io в ваши NSExceptionDomains. См. xip.io . Я подключаюсь напрямую к IP при разработке (но не выпуск), и это прекрасно работает для меня.
    2016-10-13 17: 16: 28Z

Это быстрый обходной путь (но не рекомендуется) для добавления этого в plist:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

Что означает (согласно документации Apple а>): р>

  

NSAllowsArbitraryLoads
  Логическое значение, используемое для отключения App Transport Security для любых доменов, не перечисленных в словаре NSExceptionDomains. Перечисленные домены используют параметры, указанные для этого домена.

     

Значение по умолчанию NO требует стандартного поведения App Transport Security для всех соединений.

Я действительно рекомендую ссылки:

которые помогают мне понять причины и все последствия.

XML (в файле Info.plist) ниже будет:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <false/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>PAGE_FOR_WHICH_SETTINGS_YOU_WANT_TO_OVERRIDE</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

запрещает произвольные вызовы для всех страниц, но для PAGE_FOR_WHICH_SETTINGS_YOU_WANT_TO_OVERRIDE разрешит, чтобы соединения использовали протокол HTTP.

К приведенному выше XML вы можете добавить:

<key>NSIncludesSubdomains</key>
<true/>

если вы хотите разрешить незащищенные соединения для поддоменов указанного адреса.

Лучший подход состоит в том, чтобы заблокировать все произвольные загрузки (установить в false) и добавить исключения, чтобы разрешить только те адреса, которые нам известны.

Для заинтересованных читателей

Обновление 2018 года:

Apple не рекомендует отключать это - дополнительную информацию можно найти в 207-й сессии WWDC. 2018 год с дополнительными разъяснениями в отношении безопасности

Оставляем первоначальный ответ по историческим причинам и на этапе разработки

    

142
2018-09-05 11: 09: 29Z
  1. NSAllowsArbitraryLoads должно быть false
    2015-09-14 08: 37: 04Z
  2. @ SoundBlaster для какого случая и что вы видите неправильно в моем ответе на голосование с отрицательным результатом?
    2015-09-21 09: 20: 33Z
  3. путем добавления в plist (NSAppTransportSecurity NSAllowsArbitraryLoads) все веб-службы, работающие нормально, кроме одного веб-сервиса, одного веб-сервиса, возвращают внутреннюю ошибку сервера (500) в iOS 9, но работают нормально в iOS8 или более поздняя версия
    2015-09-22 10: 19: 43Z
  4. @ SoundBlaster внес изменения, теперь у вас не должно быть возражений:)
    2015-10-07 07: 36: 03Z
  5. Спасибо, как вы на самом деле добавляете <key>NSIncludesSubdomains</key> <true/>? Должен ли каждый параметр быть окружен <dict>? как вы редактируете этот чертов файл plist? Что за форматирование? : D Спасибо.
    2016-08-10 19: 11: 55Z

Для тех из вас, кто хочет больше узнать о почему , о том, как это исправить, читайте ниже.

С появлением iOS 9 для повышения безопасности соединений между приложением и веб-службами защищаются соединения междуПриложение и его веб-служба должны следовать рекомендациям . Поведение передового опыта обеспечивается Транспортной безопасностью приложений для:

  • предотвратить случайное раскрытие и
  • обеспечивает безопасное поведение по умолчанию.

Как объяснено в Технике безопасности транспорта приложений при связи с вашим веб-сервисом App Transport Security теперь предъявляет следующие требования и поведение:

  
  • Сервер должен поддерживать по крайней мере версию 1.2 протокола TLS.
  •   
  • Соединительные шифры ограничены теми, которые обеспечивают прямую секретность (см. список шифров ниже.)
  •   
  • Сертификаты должны быть подписаны с использованием алгоритма хеширования подписи SHA256 или лучше, с ключом RSA 2048 или более или 256-битным или   ключ большей эллиптической кривой (ECC).
  •   
  • Недействительные сертификаты приводят к серьезному отказу и отсутствию соединения.
  •   

Другими словами, ваш запрос веб-службы должен: a.) использовать HTTPS и b.) быть зашифрован с использованием TLS v1.2 с прямой секретностью.

Однако, как уже упоминалось в других публикациях, вы можете переопределить это новое поведение из App Transport Security, указав небезопасный домен в Info.plist вашего приложения.

Чтобы переопределить, вам нужно добавить NSAppTransportSecurity > Свойства словаря NSExceptionDomains для вашего Info.plist. Затем вы добавите домен своего веб-сервиса в словарь NSExceptionDomains.

Например, если я хочу обойти поведение App Transport Security для веб-службы на хосте www.yourwebservicehost.com , я бы сделал следующее:

  1. Откройте свое приложение в Xcode.

  2. Найдите файл Info.plist в Project Navigator, щелкните его правой кнопкой мыши и выберите Открыть как > Пункт меню Исходный код . Файл списка свойств появится на правой панели.

  3. Поместите следующий блок свойств в словарь основных свойств (под первым <dict>).

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>www.example.com</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>

Если вам необходимо предоставить исключения для дополнительных доменов, добавьте еще одно свойство словаря под NSExceptionDomains.

Чтобы узнать больше о ключах, указанных выше, прочитайте это уже упоминавшийся технот .

    
115
2017-06-06 03: 52: 53Z
  1. Это работало в 2 моих приложениях, но не работает в 3-м. Кто-нибудь еще сталкивался с ситуацией использования вышеупомянутого исправления и все еще получал то же самое сообщение об ошибке? (и да, я обновил словарь, чтобы использовать мой домен API, а не тот, что в коде)
    2015-09-22 21: 41: 44Z
  2. Отлично! Apple подтверждает, что это решение использует
    2015-10-06 08: 01: 20Z
  3. Лучший ответ, рабочее решение.
    2015-10-07 13: 30: 55Z
  4. Это сработало для файла редактирования приложения Cordova /Phonegap /Ionic ./platforms/ios/<project>/<project>-Info.plist с NSAllowsArbitraryLoads=false и многих доменов исключений для служб с различными комбинациями TLS /HTTP /HTTPS. Первоначально использовался NSAllowsArbitraryLoads=true, затем он был откорректирован, устранение неполадок в правилах методом проб и ошибок, чтобы соответствовать рекомендациям и представить на утверждение. Заметка config.xml <access origin=.../> частично заполняет этот файл, но в настоящее время требует корректировки путем прямого редактирования или с помощью XCode для получения правильных деталей.
    2015-12-10 20: 10: 42Z
  5. Также <access origin="*"/> (в config.xml) устанавливает NSAllowsArbitraryLoads=true (для Cordova /Phonegap /гибридных приложений
    2015-12-10 20: 19: 47Z

Я не люблю редактировать лист рассылки напрямую. Вы можете легко добавить его в список с помощью графического интерфейса:

  • Нажмите на Info.plist в навигаторе слева.
  • Теперь измените данные в основной области:

    • В последней строке добавьте +
    • Введите название группы: Параметры безопасности транспорта приложения .
    • Щелкните правой кнопкой мыши группу и выберите Add Row.
    • Введите Разрешить произвольные загрузки
    • Установите справа ДА .

Пример «> </a> </p>
    </div>
<div class = 66

2016-01-17 19: 37: 37Z
  1. Чтобы уточнить: если «Разрешить произвольные загрузки» - это ДА, а существуют «Домены исключений», то разрешенные нагрузки ограничиваются теми, что в доменах исключений , Это правильно?
    2015-11-20 00: 40: 34Z
  2. это безопасный способ сделать это, если я хочу выпустить приложение?
    2016-02-19 11: 13: 15Z
  3. Нет. Разрешая произвольные загрузки, ваше приложение может свободно подключаться к любым доменам. С точки зрения безопасности, вы должны контролировать & ограничить, к какому домену /веб-сайту должно подключаться приложение, чтобы избежать неожиданного использования сети.
    2017-01-05 02: 33: 22Z
  4. Большинство приложений направляются только на известные серверы. Это контролируется разработчиком. Итак, вопросы безопасности известны.
    2017-01-05 10: 26: 53Z
  5. Почему для NSAllowsArbitraryLoads установлено значение YES? Вы подрываете цель ОВД. Также см. Самый опасный код в мире: проверка сертификатов SSL в небраузерном программном обеспечении . Ваше программное обеспечение только что составило список.
    2017-06-06 04: 00: 48Z

Apple Документ 1

Apple Документ 2

Для этого есть два решения:

Решения 1:

  1. В файле Info.plist добавьте словарь с ключом 'NSAppTransportSecurity'
  2. Добавьте еще один элемент в словарь с ключом 'Allow Arbitrary Loads'
Структура

Plist должна выглядеть так, как показано на рисунке ниже.

Решение 1 р>

Решение 2:

  1. В файле Info.plist добавьте словарь с ключом 'NSAppTransportSecurity'
  2. Добавьте еще один элемент в словарь с ключом 'NSExceptionDomains'
  3. Добавить элемент с ключом 'MyDomainName.com' типа NSDictionary
  4. Добавьте элемент с ключом «NSIncludesSubdomains» типа Boolean и установите значение YES
  5. Добавьте элемент с ключом «NSTemporaryExceptionAllowsInsecureHTTPLoads» типа Boolean и установите значение YES
Структура

Plist должна выглядеть так, как показано на рисунке ниже.

Решение 2 р>

Решение 2 является предпочтительным, поскольку оно разрешает только выбранный домен, тогда как решение 1 разрешает все незащищенные HTTP-соединения.

    
25
2016-03-10 12: 51: 16Z
  1. Почему для NSAllowsArbitraryLoads установлено значение YES? Вы подрываете цель ОВД. Также см. Самый опасный код в мире: проверка сертификатов SSL в небраузерном программном обеспечении . Ваше программное обеспечение только что составило список.
    2017-06-06 04: 02: 08Z

Транспортная безопасность доступна на iOS 9.0 или более поздней версии. Вы можете получить это предупреждение при попытке вызвать WS внутри вашего приложения:

  

Application Transport Security заблокировал загрузку ресурса HTTP (http: //) в виде открытого текста, поскольку он небезопасен. Временные исключения можно настроить с помощью файла Info.plist вашего приложения.

Добавление следующего в ваш Info.plist отключит ATS:

<key>NSAppTransportSecurity</key>
<dict>
     <key>NSAllowsArbitraryLoads</key><true/>
</dict>
    
20
2016-07-02 19: 09: 10Z
  1. NSAllowsArbitraryLoads должно иметь значение false, если true, то разрешает все незащищенные соединения
    2015-09-19 12: 03: 51Z
  2. , добавив в plist все веб-сервисы, работающие нормально, кроме одного веб-сервиса, один веб-сервис возвращает внутреннюю ошибку сервера (500) в iOS 9, но работает нормально в iOS8 или новее
    2015-09-22 10: 18: 52Z
  3. Принят в магазине?
    2015-09-23 09: 15: 51Z
  4. Очень плохой совет; см. Самый опасный код в мире: проверка SSL-сертификатов в небраузерное программное обеспечение . Если ответить на вопрос о том, достаточно ли рекомендованного способа сделать что-либо, ответы «мне тоже» не нужны.
    2017-06-06 03: 49: 53Z

Пример разработки

Вот снимок экрана со списком, который сохраняет ATS нетронутым (= безопасным), но позволяет устанавливать соединения с localhost через HTTP вместо HTTPS . Это работает в Xcode 7.1.1.

 Введите описание изображения здесь

    
14
2016-07-02 19: 23: 41Z
  1. Есть ли какие-либо способы обеспечения безопасности localhost, т. е. с использованием HTTPS, в реагирующем нативе, чтобы нам не приходилось использовать конфигурацию по умолчанию NSExceptionAllowsInsecureHTTPLoads - YES?
    2017-01-20 07: 44: 07Z

Перейдите в свой Info.plist

  1. Щелкните правой кнопкой мыши на пустом месте и выберите Добавить строку
  2. Напишите имя ключа как NSAppTransportSecurity, под ним
  3. Выберите домены исключений, добавьте новый элемент к этому
  4. Запишите свое доменное имя, к которому необходимо получить доступ
  5. Измените тип домена со строки на словарь, добавьте новый элемент
  6. NSTevenExceptionAllowsInsecureHTTPLoads, это будет логическое значение с истинным значением. Посмотрите на картинку, чтобы правильно следовать ей
12
2017-01-09 06: 28: 32Z
  1. Почему для NSAllowsArbitraryLoads установлено значение true? Вы подрываете цель ОВД. Также см. Самый опасный код в мире: проверка SSL-сертификатов в не браузерном программном обеспечении . Ваше программное обеспечение просто сделал список.
    2017-06-06 04: 05: 46Z

Определение того, какие настройки использовать, можно выполнить автоматически, как указано в этот технот :

/usr/bin/nscurl --ats-diagnostics --verbose https://your-domain.com
    
11
2015-10-07 08: 29: 36Z
  1. Очевидно, для этого вам понадобится OS X 10.11 (El Capitan).
    2015-10-07 08: 43: 23Z

По словам Apple, обычно отключение ATS приводит к отклонению приложения, если только у вас нет для этого веской причины. Даже тогда вы должны добавить исключения для доменов, к которым вы можете получить безопасный доступ.

У Apple есть отличный инструмент, который точно сообщает, какие настройки использовать: в Терминале введите

/usr/bin/nscurl --ats-diagnostics --verbose https://www.example.com/whatever

и nscurl проверит, не выполнен ли этот запрос, а затем попробуете различные настройки и точно скажет, какой из них пропущен и что делать. Например, для какого-либо стороннего URL, который я посещаю, эта команда сказала мне, что этот словарь проходит:

{
    NSExceptionDomains = {
        "www.example.com" = {
            NSExceptionRequiresForwardSecrecy = false;
        };
    };
}

Чтобы различать ваши собственные сайты и сторонние сайты, которые находятся вне вашего контроля, используйте, например, ключ NSThirdPartyExceptionRequiresForwardSecrecy.

    
10
2017-06-06 04: 03: 34Z
  1. это отличный инструмент для проверки перед тем, как проверять приложение. сэкономить время но любой ресурс, чтобы прочитать, чтобы понять выход этой команды.
    2017-01-10 09: 11: 57Z
  2. Интересный инструмент. В моем случае это преувеличивает. В нем перечислены три ключа, включая NSExceptionAllowsInsecureHTTPLoads = true;, но выясняется, что он не нужен.
    2017-06-26 04: 08: 19Z

2015-09-25 (после обновлений XCode 2015-09-18):

Я использовал не ленивый метод, но он не работал. Следующие мои попытки.

Во-первых, р>

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>www.xxx.yyy.zzz</key>
        <dict>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>

И второе,

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>www.xxx.yyy.zzz</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>

Наконец, я использовал ленивый метод:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

Это может быть немного небезопасно, но я не мог найти другие решения.

    
9
2016-07-02 19: 30: 54Z
  1. Почему для NSAllowsArbitraryLoads установлено значение true? Вы подрываете цель ОВД. Также см. Самый опасный код в мире: проверка сертификатов SSL в небраузерном программном обеспечении . Ваше программное обеспечение только что составило список.
    2017-06-06 03: 58: 59Z

ПРИМЕЧАНИЕ. Домен исключений в вашем списке должен быть в нижнем регистре.

Пример: вы назвали свой компьютер "MyAwesomeMacbook" в Настройках-> Общий доступ; ваш сервер (в целях тестирования) работает на MyAwesomeMacbook.local: 3000, и ваше приложение должно отправить запрос на http: //MyAwesomeMacbook.local: 3000 /files ..., ваш список должен указать "myawesomemacbook.local" в качестве домена исключения.

-

Ваш info.plist будет содержать ...

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>myawesomemacbook.local</key>
    <dict>
      <!--Include to allow subdomains-->
      <key>NSIncludesSubdomains</key>
      <true/>
      <!--Include to allow HTTP requests-->
      <key>NSExceptionAllowsInsecureHTTPLoads</key>
      <true/>
    </dict>
  </dict>
</dict>
    
9
2016-09-12 18: 17: 38Z

В swift 4 и xocde 10 измените NSAllowsArbitraryLoads на Allow Произвольные загрузки. так что это будет выглядеть так:

<key>App Transport Security Settings</key>
<dict>
     <key>Allow Arbitrary Loads</key><true/>
</dict>
    
8
2019-01-16 10: 56: 36Z

Использование:

 Скриншот PList для лучшего понимания

Добавьте новый элемент NSAppTransportSecurity в файл plist с типом Словарь , затем добавьте подэлемент NSAllowsArbitraryLoads в словарь типа Boolean и установите значение bool YES . Это работает для меня.

    
7
2016-07-02 19: 10: 18Z
  1. NSAllowsArbitraryLoads должно иметь значение false, если true, то разрешает все незащищенные соединения
    2015-09-21 16: 12: 03Z
  2. путем добавления в plist всех веб-сервисов, работающих нормально, кроме одного веб-сервиса, один веб-сервис возвращает внутреннюю ошибку сервера (500) в iOS 9, но работает нормально в iOS8 или новее @ThiagoArreguy
    2015-09-22 10: 18: 24Z
  3. Очень плохой совет; см. Самый опасный код в мире: проверка SSL-сертификатов в небраузерное программное обеспечение . Если ответить на вопрос о том, достаточно ли рекомендованного способа сделать что-либо, ответы «мне тоже» не нужны.
    2017-06-06 03: 51: 02Z
  4. Я знаю, что это плохой совет, но пока это только решение в режиме разработки. Apple предоставила нам гибкость, если это так плохо, они бы этого не допустили.
    2017-06-06 04: 03: 34Z

Возможно, стоит упомянуть, как туда добраться ...

Info.plist - это один из файлов под Main.storyboard или viewController.swift.

Когда вы щелкаете по нему в первый раз, он обычно находится в табличном формате, поэтому щелкните правой кнопкой мыши файл и выберите «Открыть как» исходный код, а затем добавьте приведенный ниже код в конец, т.е.

 <key>NSAppTransportSecurity</key><dict><key>NSAllowsArbitraryLoads</key><true/></dict>

Скопируйте и вставьте код чуть выше

 "</dict>
</plist>"

который находится в конце.

    
6
2016-07-02 19: 27: 11Z
  1. Почему для NSAllowsArbitraryLoads установлено значение true? Вы подрываете цель ОВД. Также см. Самый опасный код в мире: проверка сертификатов SSL в небраузерном программном обеспечении . Ваше программное обеспечение только что составило список.
    2017-06-06 04: 00: 00Z

Обновление для Xcode 7.1, столкнувшееся с проблемой 27.10.15:

Новое значение в Info.plist - «Параметры безопасности транспорта приложения». Оттуда этот диктионный должен содержать:

  • Разрешить произвольные загрузки = ДА
  • Исключительные домены (укажите здесь свой http-домен)
5
2016-07-02 19: 25: 48Z

Для тех, кто пришел сюда, пытаясь найти причину, почему их WKWebView всегда белый и ничего не загружает (в точности как описано здесь как заставить WKWebView работать в swift и для приложения MacOS ):

Если все вышеперечисленное в области ракетостроения не работает, проверьте очевидное: настройки песочницы

 настройки песочницы]

Будучи новичком в Swift и Cocoa, но довольно опытным в программировании, я потратил около 20 часов, чтобы найти это решение. Ни один из десятков руководств по хипстерам для iOS, ни яблочных лейтмотивов - ничто не упоминает этот маленький флажок.

    
4
2018-07-20 14: 40: 57Z
  1. Боже мой, большое спасибо! Вы сохранили мне тот же 20-часовой поиск!
    2018-04-30 11: 05: 18Z
  2. не видит этот раздел в разделе «Возможности» цели (Xcode 9.4.1)
    2018-07-20 14: 42: 14Z

Использование NSExceptionDomains может не применять эффект одновременно, поскольку целевой сайт может загружать ресурсы (например, файлы js) из ​​внешних доменов через http. Это также может быть решено путем добавления этих внешних доменов к NSExceptionDomains.

Чтобы проверить, какие ресурсы не могут быть загружены, попробуйте использовать удаленную отладку. Вот учебник: http://geeklearning.io/apache- Cordova-и-дистанционная-отладка-на-ИСНО / р>     

1
2017-08-14 06: 12: 50Z

Для Cordova, если вы хотите добавить его в свой ios.json, сделайте следующее:

"NSAppTransportSecurity": [
   {
      "xml": "<dict><key>NSAllowsArbitraryLoads</key><true /></dict>"
   }
]

И это должно быть внутри:

"*-Info.plist": {
   "parents": {
   }
}
    
0
2016-03-21 12: 41: 01Z
  1. Просто < access origin = "*" /> в config.xml не работает. Не уверен, что оба необходимы, но решение ios.json закрыло для меня сделку.
    2016-03-21 12: 45: 45Z
  2. Почему для NSAllowsArbitraryLoads установлено значение true? Вы подрываете цель ОВД. Также см. Самый опасный код в мире: проверка сертификатов SSL в небраузерном программном обеспечении . Ваше программное обеспечение только что составило список.
    2017-06-06 04: 02: 32Z

По умолчанию iOS поддерживает только HTTPS API. Поскольку HTTP не является безопасным, вам придется отключить безопасность транспорта приложения. Есть два способа отключить ATS: -

  

1. Добавление исходного кода в проект info.plist и добавление следующего кода в корневой тег.

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
  

2. Использование информации о проекте.

Нажмите on проект на проекте на левой панели, выберите проект в качестве цели и выберите вкладку информации. Вы должны добавить словарь в следующей структуре.

 введите описание изображения здесь

    
0
2019-05-24 12: 02: 47Z

Как уже отмечали многие, эта проблема связана с iOS 9.0. Они добавили что-то под названием App Transport Security, и я тоже был раздражен, когда он сломал мои приложения.

Вы можете перевязать его с помощью ключа NSAllowsArbitraryLoads на YES в словаре NSAppTransportSecurity в вашем файле .plist, но в конечном итоге вам потребуется переписать код, который формирует ваши URL, чтобы сформировать префикс HTTPS: //.

Apple переписала класс NSUrlConnection в iOS 9.0. Вы можете прочитать об этом в NSURLConnection .

В противном случае вам, возможно, придется отказаться от iOS 9.0, пока у вас не будет времени для реализации правильного решения.

    
- 3
2016-07-02 19: 28: 50Z
источник размещен Вот