Выбор ответа Junior Сеть, Codable и хранение обновлено

App Transport Security

Вопрос

Приложение пытается загрузить http://api.example.com и получает ошибку. Почему?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: App Transport Security по умолчанию разрешает только HTTPS. ATS требует HTTPS (TLS 1.2+ с forward secrecy) для соединений приложения.

Варианты ответа

  1. iOS блокирует все запросы без заголовка авторизации к внешним серверам
  2. URLSession не поддерживает порт 80, нужен явный порт в адресе
  3. App Transport Security по умолчанию разрешает только HTTPSправильный ответ
  4. Нужно разрешение пользователя на доступ к сети в Info.plist

Разбор

ATS требует HTTPS (TLS 1.2+ с forward secrecy) для соединений приложения. Исключения настраиваются в Info.plist (NSAppTransportSecurity) и требуют обоснования при ревью. Авторизация и порты тут ни при чём. Отдельного разрешения на интернет на iOS нет, есть только запрос доступа к локальной сети.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.