App Transport Security и IP-адреса в iOS9

Я разрабатываю свое приложение для iOS, используя локальный сервер, работающий на моем компьютере разработчика. При тестировании на устройствах я подключаюсь напрямую через IP-адрес, который использует HTTP, а не HTTPS (поэтому мне не приходится иметь дело с самозаверяющими сертификатами во время разработки, которые в любом случае не понравятся устройству).

Я думал, что этого будет достаточно

Тем не менее, не может заставить его работать без добавления NSAllowsArbitraryLoads = YESАка это:

Теперь я должен помнить, чтобы удалить это при развертывании производственной сборки, но не во время разработки... arg. Если NSExceptionDomains работать с IP-адресами, и если нет, могу ли я сделать что-то еще, не включая NSAllowsArbitraryLoads?

4 ответа

Решение

Жестко закодированный IP-адрес не будет работать в iOS9. Я также столкнулся с той же проблемой. Перепробовал все перестановки и комбинации доступных решений. Наконец, пришлось использовать правильное доменное имя.

Итак, нет. В iOS9 вы просто не можете избежать жестко закодированных IP-адресов.

Есть ли что-нибудь еще, что я могу сделать без включения NSAllowsArbitraryLoads?

Одним из обходных путей является использование http://xip.io/, как объяснил QJeffR в этой ветке форумов Apple Developer Forum (которой поделился David L в своем комментарии):

DNS-вызов (например) 10.0.1.8.xip.io преобразуется в http://10.0.1.8/, что позволяет использовать домен вместо IP-адреса для NSExceptionDomains ключ.

Как сказал @PanxShaz, вы не можете ввести жестко закодированный IP-адрес, но вы можете использовать простой обходной путь:

  1. Открыть свой /etc/hosts использование файла sudo и добавьте новое локальное доменное имя для вашего IP-адреса. Пример:

    192.168.99.100 docker-host.localhost

  2. Затем очистите свой DNS:

    dscacheutil -flushcache

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

Если вы нацелены на iOS 10+, просто установите флаг NSAllowsLocalNetworking.

Другие вопросы по тегам