Блокировка App Transport Security с параметром Разрешить произвольные загрузки = ДА

Я пытаюсь получить доступ к моему скрипту Python CGI, работающему на экземпляре в Amazon EC2, через запрос POST, но даже несмотря на то, что я изменил свой файл Info.plist, чтобы разрешить произвольные загрузки, он показывает:

ошибка

Вот где я делаю запрос POST:

let manager = AFHTTPRequestOperationManager()
        let URL = "http://ec2-XX-XX.compute-1.amazonaws.com/cgi-bin/hellopy2.py"
        let params = ["userToken": "XXXXXXXXXXX"]

        manager.POST(URL, parameters: params, success: { (operation, responseObject) -> Void in

Вот мой файл info.plist:

Info.plist


person David    schedule 04.10.2016    source источник


Ответы (2)


Убедитесь, что у вас правильный файл Info.plist

Во-первых, убедитесь, что файл Info.plist, в который вы поместили эти настройки, является тем, который использует ваш проект. Вы можете убедиться в этом, зайдя в настройки своего проекта и выполнив поиск Info.plist. Убедитесь, что файл Info.plist, в котором вы устанавливаете эти значения, соответствует цели сборки, которую вы создаете.

Пример настроек Info.plist

Вы также можете проверить постфактум, если вы создаете свой проект в IPA. Разархивируйте IPA, и в разархивированной папке вы должны увидеть файл Info.plist. Убедитесь, что ваши настройки ATS находятся в этом файле, чтобы убедиться, что работающее приложение должно использовать эти исключения.


Установите правильные/непротиворечивые настройки

После того, как вы убедились в этом, вы должны очистить свои настройки. Вы используете глобальный флаг для разрешения любого небезопасного трафика. Это будет работать на данный момент, но после конца 2016 года вы не сможете отправить заявку в магазин, не предоставив Apple обоснования и не столкнувшись с возможным отказом. Я бы рекомендовал не использовать его на данном этапе, если только это не приложение, которое не будет распространяться через магазин приложений (например, корпоративное приложение). Если вы решите использовать этот флаг, удалите домены исключений, так как они не нужны (вы фактически говорите, что все домены являются исключениями и разрешают http).

Если вы хотите сделать это правильно, разрешив только небезопасные подключения к amazonaws, ваши настройки должны выглядеть так:

Очищены настройки безопасности транспорта приложений без дополнительных записей

Если у вас есть эти настройки и ваша конфигурация Info.plist верна, вы сможете получить доступ к любым поддоменам amazonaws.com без https.

person wottle    schedule 06.10.2016
comment
Спасибо! Это помогло мне прояснить МНОГО вещей. Проблема была в моем доменном имени. - person David; 06.10.2016

"http://" не является частью доменного имени.

Удалите «http://» из имени домена в файле Info.plist.

* Вам не нужно устанавливать для глобального ключа «Разрешить произвольные загрузки» значение «Да», чтобы это работало.

person Sam_M    schedule 04.10.2016
comment
@DavidFernandez Вы получаете сообщение об ошибке, если удаляете домены исключений все вместе и устанавливаете для параметра Разрешить произвольные загрузки только значение ДА? - person Sam_M; 05.10.2016
comment
@DavidFernandez Вы пытались удалить приложение из симулятора и повторить попытку? - person Sam_M; 05.10.2016
comment
Удалил приложение и попробовал с доменами исключения и без них, но все равно получаю ошибку. - person David; 05.10.2016
comment
Любые другие предложения? - person David; 06.10.2016
comment
@DavidFernandez Проверьте этот ответ, и если это не сработает, попробуйте третий ответ в этой ссылке, чтобы вручную добавить параметры, необходимые для plist-файл. - person Sam_M; 06.10.2016
comment
Спасибо за помощь. Проблема была в моем доменном имени - person David; 06.10.2016