如何讓iOS9支持訪問(wèn)http:
天升級(jí)Xcode 7.0 bata發(fā)現(xiàn)網(wǎng)絡(luò)訪問(wèn)失敗。
如果你用的是Xcode 7,這時(shí)候你應(yīng)該得到了一塊雪白雪白的屏幕,我們?cè)庥隽薭ug。這是因?yàn)閕OS 9 SDK中默認(rèn)不再支持訪問(wèn)非HTTPS的地址,我們需要進(jìn)行一些修改:
xcode輸出錯(cuò)誤信息
The resource
could not be loaded because the App Transport Security policy requires
theuseofa
secureconnection.
Google后查證,iOS9引入了新特性App Transport Security (ATS)。詳情:App Transport Security
(ATS)
新特性要求App內(nèi)訪問(wèn)的網(wǎng)絡(luò)必須使用HTTPS協(xié)議。
但是現(xiàn)在公司的項(xiàng)目使用的是HTTP協(xié)議,使用私有加密方式保證數(shù)據(jù)安全。現(xiàn)在也不能馬上改成HTTPS協(xié)議傳輸。
最終找到以下解決辦法:
第一種方案:簡(jiǎn)潔(推薦)
1.在Info.plist中添加NSAppTransportSecurity類型Dictionary。
2.在NSAppTransportSecurity下添加NSAllowsArbitraryLoads類型Boolean,值設(shè)為YES
很多人修改后還是不能用添加一下截圖:

在Filter中搜索Info.plis
t,選擇Info.plist進(jìn)行編輯

按照上面提到的方式添加信息,正確的修改會(huì)看到下圖這個(gè)樣子,注意類型NSAppTransportSecurity為Dictionary,NSAllowsArbitraryLoads為Boolean,復(fù)制粘貼的時(shí)候,不要多了空格,segment fault 頁(yè)面上直接復(fù)制,經(jīng)常會(huì)多一個(gè)出空格!
注意??,單元測(cè)試下面也有一個(gè)Info.plist,修改那個(gè)文件是沒(méi)有作用的!
補(bǔ)充說(shuō)明
上面介紹的方法雖然解決了網(wǎng)絡(luò)訪問(wèn)的問(wèn)題,但是蘋(píng)果提供的安全保障也被關(guān)閉了。
不過(guò),按照國(guó)內(nèi)的現(xiàn)狀,關(guān)閉這個(gè)限制也許是更實(shí)際的做法。
至于原因就太多了,第三方SDK(幾乎都是訪問(wèn)HTTP),合作伙伴接入(不能要求它們一定要支持HTTPS)。
如果你的App沒(méi)有受到這些原因的限制,還是更建議你增加HTTPS支持,而不是關(guān)閉限制。
請(qǐng)大家根據(jù)項(xiàng)目的實(shí)際情況作調(diào)整。
出于安全考慮我們提倡使用HTTPS,退而求其次,優(yōu)先考慮使用例外:將允許訪問(wèn)的域加入到配置列表中
第二種解決方案:
在Info.plist上右鍵,以源代碼方式打開(kāi)。如下圖:

之后在第一個(gè)《key》之前加入以下代碼:

再次運(yùn)行項(xiàng)目,搞定!