Безопасность транспорта приложений и IP-адреса в iOS9

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

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

enter image description here

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

enter image description here

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

Ответ 1

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

Итак, NO.In iOS9 вы просто не можете уйти с жестко закодированными IP-адресами.

Ответ 2

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

Одним из способов является использование xip.io, как объясняется QJeffR в этот форум разработчиков Apple (который разделил Дэвид Л в его комментарий):

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

Ответ 3

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

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

    192.168.99.100 docker-host.localhost

  • Затем очистите DNS:

    dscacheutil -flushcache

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

Ответ 4

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