Безопасность транспорта приложений и IP-адреса в iOS9
Я разрабатываю свое приложение iOS, используя локальный сервер, работающий на моем dev box. При тестировании на устройствах я подключаюсь напрямую через IP-адрес, который находится через HTTP, а не HTTPS (поэтому мне не нужно иметь дело с самозаверяющими сертификатами во время разработки, которые устройству даже не понравятся).
Я думал, что этого будет достаточно:
, не может заставить его работать без добавленияNSAllowsArbitraryLoads = YES
, АКА это:
Сейчас, Я придется помнить, чтобы удалить это при прокатке производственной сборки, но не во время разработки...аргумент. Должен ли NSExceptionDomains
работа с IP-адресами, а если нет, есть ли что-нибудь еще, что я могу сделать без включения NSAllowsArbitraryLoads
?
4 ответа:
жестко закодированный IP-адрес не будет работать в iOS9. Я также столкнулся с той же проблемой. Перепробовал все перестановки и комбинации доступных решений. Наконец, пришлось использовать правильное доменное имя.
Итак, NO.In iOS9 вы просто не можете уйти с жестко закодированными IP-адресами.
есть ли что-нибудь еще, что я могу сделать без включения
NSAllowsArbitraryLoads
?один обходной путь заключается в использовании xip.io, Как объяснил QJeffR на это Apple Developer Forums thread (который был разделен Дэвидом L в комментарии):
вызов DNS (например) 10.0.1.8.xip.io разрешу до 10.0.1.8, что позволяет использовать домен вместо IP адрес для
NSExceptionDomains
ключ.
как @PanxShaz сказал, что вы не можете поставить жесткий IP-адрес, но вы можете использовать простой обходной путь:
открыть
/etc/hosts
файл с помощьюsudo
и добавить новое локальное доменное имя для вашего IP-адреса. Пример:
192.168.99.100 docker-host.localhost
затем промойте DNS:
dscacheutil -flushcache
и, наконец, используйте этот новый локальный домен в исключениях безопасности транспорта вашего приложения.
Если вы нацелены на iOS 10+, просто установите NSAllowsLocalNetworking флаг.