2015-06-17 79 views
49

我使用運行在我的開發箱上的本地服務器開發我的iOS應用程序。當在設備上進行測試時,我通過IP地址直接連接,該地址通過HTTP而不是HTTPS(因此我無需在開發過程中處理自簽名證書,而設備甚至不會喜歡)。應用程序傳輸iOS9中的安全和IP地址

我認爲這就足夠了:

enter image description here

但是,不能讓它不還增加NSAllowsArbitraryLoads = YES工作,AKA這樣的:

enter image description here

現在,我將有要記住在生產版本中生成但不在開發過程中刪除此內容... arg。如果NSExceptionDomains與IP地址一起工作,如果沒有,還有什麼我可以做,而不需要啓用NSAllowsArbitraryLoads

回答

49

硬編碼的IP地址不會在iOS9中工作。我也面臨同樣的問題。 嘗試所有排列&可用解決方案的組合。 最後,不得不使用合適的域名。

所以,NO。在iOS9中,你無法擺脫硬編碼的IP地址。

+3

我遇到了這個鏈接:https://forums.developer.apple.com/thread/6205關於允許在局域網上的IP地址。不幸的是,目前沒有解決方案,但功能請求已提交。 –

+2

有沒有人找到說明這一點的官方文檔?這是蘋果的錯誤,還是這是打算? –

+6

僅用於安全目的。蘋果在WWDC-2015期間提到了這一點http://www.internetsociety.org/deploy360/blog/2015/06/apple-will-require-ipv6-support-for-all-ios-9-apps/ – PanxShaz

21

還有什麼我可以做的,也沒有啓用NSAllowsArbitraryLoads

一個解決方法是使用xip.io,如通過QJeffRthis Apple Developer Forums thread說明(這是由David L的his comment共享):

至(例如)10.0.1.8.xip.io甲DNS呼叫將解析到10.0.1.8,允許使用域而不是IP地址爲NSExceptionDomains密鑰。

+0

這適用於那些需要(由於各種原因)連接到IP地址而不是域名,或連接到局域網IP地址。 這也適用於LAN地址,但iOS必須具有互聯網連接才能訪問xip.io服務。 然後,您只需在應用傳輸安全設置中允許「xip.io」和子域名。 – wilsontgh

+0

很棒的建議! – delrox

+0

難道這不會通過一個未知的xip.io服務器將所有不安全的流量路由嗎? – Efren

5

正如@PanxShaz說你不能把一個硬編碼的IP地址,但你可以用一個簡單的解決方法:

  1. 使用sudo打開/etc/hosts文件,併爲您的IP地址添加一個新的本地域名地址。例如:

    192.168.99.100 docker-host.localhost

  2. 然後刷新你的DNS:

    dscacheutil -flushcache

  3. 最後,在你的應用程序傳輸安全的異常使用這個新的地域。

+0

這是不可能的iOS沒有越獄。 – Avi

+0

@Avi是的,這是可能的,因爲這實際上是在你的Mac上完成的。這裏的目的是在開發時提供解決方法。 – anasaitali

+0

除非您的iOS設備正在使用您的Mac用於DNS,否則它將不起作用。也許在模擬器上。 – Avi

相關問題