Безопасность транспорта приложений и 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.