Какие настройки мне нужно info.plist
включить, чтобы включить режим HTTP согласно следующему сообщению об ошибке?
Безопасность транспорта заблокировала загрузку ресурса HTTP (http: //) в виде открытого текста, поскольку она небезопасна. Временные исключения можно настроить с помощью файла Info.plist вашего приложения.
Предположим, что мой домен example.com
.
Allow arbitary loads
). Вскоре это станет невозможным, поскольку Apple потребует ATS (изначально конец года - срок был продлен) - developer.apple.com/news/?id=12212016bОтветы:
Если вы используете Xcode 8.0+ и Swift 2.2+ или даже Objective C:
источник
NSAllowsArbitraryLoads
установленоtrue
? Вы подрываете цель ОВД. Также см . Самый опасный код в мире: проверка SSL-сертификатов в не браузерном программном обеспечении . Ваша программа только что попала в список.Использовать NSAppTransportSecurity:
Вы должны установить NSAllowsArbitraryLoads ключ к YES под NSAppTransportSecurity словаря в вашем info.plist файла.
источник
Вот настройки визуально:
источник
См форум размещать приложения безопасности на транспорте? ,
Также на странице Настройка исключений безопасности транспорта приложений в iOS 9 и OSX 10.11 .
Например, вы можете добавить определенный домен, например:
Ленивый вариант:
Замечания:
info.plist
является файлом XML, поэтому вы можете разместить этот код более или менее в любом месте файла.источник
Это было проверено и работало на iOS 9 GM seed - это конфигурация, позволяющая определенному домену использовать HTTP вместо HTTPS:
NSAllowsArbitraryLoads
должно бытьfalse
, потому что это запрещает все небезопасные соединения, но список исключений разрешает подключение к некоторым доменам без HTTPS.источник
Это быстрый обходной путь (но не рекомендуется), чтобы добавить это в plist:
Что означает (согласно документации Apple ):
Я действительно рекомендую ссылки:
которые помогают мне понять причины и все последствия.
XML (в файле Info.plist) ниже будет:
запретить произвольные вызовы для всех страниц, но for
PAGE_FOR_WHICH_SETTINGS_YOU_WANT_TO_OVERRIDE
позволит этим соединениям использовать протокол HTTP.К приведенному выше XML вы можете добавить:
если вы хотите разрешить незащищенные соединения для поддоменов указанного адреса.
Наилучший подход состоит в том, чтобы заблокировать все произвольные загрузки (установить в false) и добавить исключения, чтобы разрешить только те адреса, которые нам известны.
Для заинтересованных читателей
2018 Обновление:
Apple не рекомендует отключать это - больше информации можно найти в 207 сессии WWDC 2018 с большим количеством вещей, объясненных относительно безопасности
Оставив первоначальный ответ по историческим причинам и фазе разработки
источник
NSAllowsArbitraryLoads
должно бытьfalse
<key>NSIncludesSubdomains</key> <true/>
? Каждый параметр должен быть окружен<dict>
? как вы редактируете этот чертов файл plist? Что за форматирование? : D Спасибо.Для тех из вас, кто хочет узнать больше о том, почему это происходит, помимо того, как это исправить, читайте ниже.
С появлением iOS 9 для повышения безопасности соединений между приложением и веб-сервисами безопасные соединения между приложением и его веб-сервисом должны соответствовать передовым методам . Поведение лучших практик обеспечивается App Transport Security для:
Как объяснено в Technote App Transport Security , при связи с веб-службой App Transport Security теперь предъявляет следующие требования и поведение:
Другими словами, ваш запрос веб-службы должен: a.) Использовать HTTPS и b.) Быть зашифрован с использованием TLS v1.2 с прямой секретностью.
Однако, как упоминалось в других публикациях, вы можете переопределить это новое поведение в App Transport Security, указав незащищенный домен в
Info.plist
вашем приложении.Чтобы переопределить, вам нужно добавить
NSAppTransportSecurity
>NSExceptionDomains
свойства словаря к вашемуInfo.plist
. Далее вы добавите домен вашего веб-сервиса вNSExceptionDomains
словарь.Например, если я хочу обойти поведение App Transport Security для веб-службы на узле www.yourwebservicehost.com, я бы сделал следующее:
Откройте свое приложение в Xcode.
Найдите
Info.plist
файл в Project Navigator, щелкните его правой кнопкой мыши и выберите пункт меню « Открыть как > Исходный код» . Файл списка свойств появится на правой панели.Поместите следующий блок свойств в основной словарь свойств (под первым
<dict>
).Если вам нужно предоставить исключения для дополнительных доменов, вам нужно добавить еще одно свойство словаря
NSExceptionDomains
.Чтобы узнать больше о ключах, упомянутых выше, прочитайте этот уже упомянутый technote .
источник
./platforms/ios/<project>/<project>-Info.plist
соNSAllowsArbitraryLoads=false
многими доменами исключений для служб с различными комбинациями TLS / HTTP / HTTPS. Сначала использовались,NSAllowsArbitraryLoads=true
затем корректировались, устраняя неисправности правил методом проб и ошибок, чтобы соответствовать рекомендациям и представить на утверждение. Примечаниеconfig.xml
<access origin=.../>
заявления частично заполнить этот файл, но в настоящее время требует корректировки путем прямого редактирования или с помощью XCode , чтобы получить детали исправить.<access origin="*"/>
(в config.xml) наборыNSAllowsArbitraryLoads=true
(для Cordova / Phonegap / гибридных приложенийNSExceptionAllowsInsecureHTTPLoads
установленоtrue
? Вы подрываете цель ОВД. Также см . Самый опасный код в мире: проверка SSL-сертификатов в не браузерном программном обеспечении . Ваша программа только что попала в список.Я не люблю редактировать список напрямую. Вы можете легко добавить его в список с помощью графического интерфейса:
Теперь измените данные в основной области:
Add Row
источник
NSAllowsArbitraryLoads
установленоYES
? Вы подрываете цель ОВД. Также см . Самый опасный код в мире: проверка SSL-сертификатов в не браузерном программном обеспечении . Ваша программа только что попала в список.Для этого есть два решения:
Решения 1:
Info.plist
файл добавить словарь с ключом 'NSAppTransportSecurity
''Allow Arbitrary Loads'
Plist
структура должна выглядеть так, как показано на рисунке ниже.Решение 2:
Info.plist
файл добавить словарь с ключом 'NSAppTransportSecurity
'NSExceptionDomains
''MyDomainName.com'
типа NSDictionaryNSIncludesSubdomains
' типаBoolean
и значением, установленным какYES
NSTemporaryExceptionAllowsInsecureHTTPLoads
' типаBoolean
и значением, установленным какYES
Plist
структура должна выглядеть так, как показано на рисунке ниже.Решение 2 является предпочтительным, поскольку оно разрешает только выбранный домен, тогда как решение 1 разрешает все незащищенные HTTP-соединения.
источник
NSAllowsArbitraryLoads
установленоYES
? Вы подрываете цель ОВД. Также см . Самый опасный код в мире: проверка SSL-сертификатов в не браузерном программном обеспечении . Ваша программа только что попала в список.Транспортная безопасность доступна на iOS 9.0 или более поздней версии. Вы можете получить это предупреждение при попытке вызвать WS внутри вашего приложения:
Добавление следующего в ваш Info.plist отключит ATS:
источник
Пример разработки
Вот скриншот plist, который сохраняет ATS нетронутым (= безопасным), но позволяет устанавливать соединения с localhost через HTTP вместо HTTPS . Работает в Xcode 7.1.1.
источник
NSExceptionAllowsInsecureHTTPLoads - YES
конфигурацию по умолчанию ?Перейти к вашему Info.plist
источник
NSAllowsArbitraryLoads
установленоtrue
? Вы подрываете цель ОВД. Также см . Самый опасный код в мире: проверка SSL-сертификатов в не браузерном программном обеспечении . Ваша программа только что попала в список.По словам Apple, обычно отключение ATS приведет к отклонению приложения, если только у вас нет для этого веской причины. Даже тогда вы должны добавить исключения для доменов, к которым вы можете получить безопасный доступ.
У Apple есть отличный инструмент, который говорит вам, какие именно настройки использовать: в Терминале введите
и nscurl проверит, не выполнен ли этот запрос, а затем попробует различные настройки и скажет вам, какой из них пропущен и что делать. Например, для некоторого стороннего URL, который я посещаю, эта команда сказала мне, что этот словарь проходит:
Чтобы различать ваши собственные сайты и сторонние сайты, которые находятся вне вашего контроля, используйте, например, ключ NSThirdPartyExceptionRequiresForwardSecrecy.
источник
NSExceptionAllowsInsecureHTTPLoads = true;
, но оказывается, что один не нужен.Выяснение того, какие настройки использовать, может быть выполнено автоматически, как упомянуто в этом техническом замечании :
источник
ПРИМЕЧАНИЕ. Домен исключения в вашем списке должен быть в нижнем регистре.
Пример: вы назвали свой компьютер «MyAwesomeMacbook» в «Настройки-> Общий доступ»; ваш сервер (в целях тестирования) работает на MyAwesomeMacbook.local: 3000, и вашему приложению необходимо отправить запрос на http: //MyAwesomeMacbook.local: 3000 / files ..., в вашем списке свойств вам нужно будет указать "myawesomemacbook. локальный »в качестве домена исключения.
-
Ваш info.plist будет содержать ...
источник
Использование:
Добавьте новый элемент NSAppTransportSecurity в plist -файл с типом Dictionary , затем добавьте подэлемент NSAllowsArbitraryLoads в словарь типа Boolean и установите значение bool YES . Это работает для меня.
источник
2015-09-25 (после обновлений Xcode 2015-09-18):
Я использовал не ленивый метод, но он не работал. Следующие мои попытки.
Первый,
И второе,
Наконец, я использовал ленивый метод:
Это может быть немного небезопасно, но я не мог найти другие решения.
источник
NSAllowsArbitraryLoads
установленоtrue
? Вы подрываете цель ОВД. Также см . Самый опасный код в мире: проверка SSL-сертификатов в не браузерном программном обеспечении . Ваша программа только что попала в список.В swift 4 и xocde 10 измените NSAllowsArbitraryLoads на Allow Произвольные загрузки. так это будет выглядеть так:
источник
Возможно, стоит упомянуть, как туда добраться ...
Info.plist - это один из файлов под Main.storyboard или viewController.swift.
Когда вы нажимаете на него в первый раз, он обычно находится в табличном формате, поэтому щелкните правой кнопкой мыши файл и выберите «открыть как» исходный код, а затем добавьте приведенный ниже код в конец, то есть:
Скопируйте и вставьте код чуть выше
который в конце.
источник
NSAllowsArbitraryLoads
установленоtrue
? Вы подрываете цель ОВД. Также см . Самый опасный код в мире: проверка SSL-сертификатов в не браузерном программном обеспечении . Ваша программа только что попала в список.Обновление для Xcode 7.1, сталкивающееся с проблемой 27.10.15:
Новое значение в Info.plist - «Настройки безопасности транспорта приложения». Оттуда этот словарь должен содержать:
источник
Для тех, кто пришел сюда, пытаясь найти причину, по которой их WKWebView всегда белый и ничего не загружает (в точности как описано здесь, как мне заставить WKWebView работать в swift и для приложения MacOS ):
Если все вышеперечисленное в области ракетостроения не работает, проверьте очевидное: настройки песочницы
Будучи новичком в Swift и Cocoa, но довольно опытным в программировании, я потратил около 20 часов, чтобы найти это решение. Ни один из десятков руководств по хипстерам для iOS, ни яблочных лейтмотивов - ничто не упоминает этот маленький флажок.
источник
По умолчанию iOS поддерживает только HTTPS API. Поскольку HTTP не является безопасным, вам придется отключить безопасность транспорта приложения. Есть два способа отключить ATS:
Нажмите на проект в левой панели, выберите проект в качестве цели и выберите вкладку информации. Вы должны добавить словарь в следующей структуре.
источник
источник
Использование
NSExceptionDomains
может не применять эффект одновременно, так как целевой сайт может загружать ресурсы (например,js
файлы) из внешних доменовhttp
. Это может быть решено добавлением этих внешних доменовNSExceptionDomains
.Чтобы проверить, какие ресурсы не могут быть загружены, попробуйте использовать удаленную отладку. Вот учебник: http://geeklearning.io/apache-cordova-and-remote-debugging-on-ios/
источник
Для Cordova, если вы хотите добавить его в свой ios.json, сделайте следующее:
И это должно быть внутри:
источник
NSAllowsArbitraryLoads
установленоtrue
? Вы подрываете цель ОВД. Также см . Самый опасный код в мире: проверка SSL-сертификатов в не браузерном программном обеспечении . Ваша программа только что попала в список.Как многие уже отмечали, эта проблема связана с iOS 9.0. Они добавили что-то под названием App Transport Security, и я тоже был раздражен, когда он сломал мои приложения.
Вы можете перевязать его с помощью ключа NSAllowsArbitraryLoads на YES в словаре NSAppTransportSecurity в вашем файле .plist, но в конечном итоге вам нужно будет переписать код, который формирует ваши URL, чтобы сформировать префикс HTTPS: //.
Apple переписала класс NSUrlConnection в iOS 9.0. Вы можете прочитать об этом в NSURLConnection .
Иначе вам, возможно, придется отказаться от iOS 9.0, пока у вас не будет времени, чтобы реализовать правильное решение.
источник