Проблема политики ATS при использовании URL перенаправления в Swift - PullRequest
0 голосов
/ 19 февраля 2020

Я использую эту ссылку , например, чтобы загрузить ссылку. Хотя ссылка является ссылкой http, она будет перенаправлена ​​на ссылку https. Работает в браузере. Однако, как только я разрешу моему приложению iOS загрузить ресурс, он скажет: «Ресурс не может быть загружен, поскольку политика безопасности транспорта приложений требует использования безопасного соединения».

Я использую эта библиотека для загрузки картинки. Не поддерживается ли Swift загрузкой ресурса https? Я мог бы подумать, что ATS блокирует соединение с сервером, поэтому перенаправление даже не может быть получено.

Я был бы очень благодарен за любые мысли по этому поводу.

Christian

Ответы [ 3 ]

2 голосов
/ 20 февраля 2020

Хотя вы, безусловно, можете отключить всю ATS, используя решения, предоставленные Кишаном и Джонсоном, если вы знаете домен http-ресурса, который вы пытаетесь загрузить, у вас есть более подходящие варианты. Подробнее о том, почему отключение ATS не самая лучшая идея, см. в этом посте .

Лучшие варианты:

  1. Если вы знаете, что http-ресурс всегда будет перенаправлять вас на один и тот же URL-адрес https: //, почему бы просто не использовать https: // URL в вашем коде. Это не сработает, если редирект - Dynami c, но если ваш код пытается загрузить http://www.example.com/resource, и он всегда перенаправляет на https://www.example.com/resource, почему бы просто не изменить Ваш код на go до версии https.

  2. Отключать ATS только для домена, в котором необходимо разрешить не HTTPS-соединения. Это позволяет вам разрешать http-подключения только для тех доменов, которые, как вы знаете, не поддерживают https, лучше защищают пользователей вашего приложения. Ваши настройки ATS в вашем info.plist могут выглядеть примерно так:

Info.plist settings for domain specific ATS settings

Если и только если ваши URL-адреса основаны на данных, которые вы не контролируете (т. Е. Домены в этих URL-адресах могут быть чем угодно), вам нужно будет отключить все ATS, и Apple может в конечном итоге потребовать от вас обоснования отключить его. Первоначально они собирались отключить все приложения ATS go через дополнительный процесс запроса обоснования, но в последнее время они не упоминали об этом. Это должно быть последним средством.

ATS settings for disabling ATS entirely

Честно говоря, глядя на ваш пример UR

0 голосов
/ 19 февраля 2020

Вы можете выполнить шаги для устранения ошибки:

  1. Go для файла цели проекта info.plist

  2. Добавлен ключ с именем App Transport Security Settings

  3. Добавлен подключ с именем Allow Arbitrary Loads в качестве логического значения и для его значения YES, как показано на следующем рисунке.

enter image description here

ИЛИ Другой способ

Щелкните правой кнопкой мыши по info.plist -> Open As -> Source Code

Добавьте это,

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
0 голосов
/ 19 февраля 2020

Go до info.plist добавить термин под названием App Transport Security Settings.

И под этим добавить Allow Arbitrary Loads

...