今天升級(jí) Xcode 7.0 bata,發(fā)現(xiàn)網(wǎng)絡(luò)訪問失敗。
輸出錯(cuò)誤信息
The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.
Google后查證,iOS9引入了新特性 App Transport Security (ATS) 。
詳情: App Transport Security (ATS)
新特性要求App內(nèi)訪問的網(wǎng)絡(luò)必須使用 HTTPS協(xié)議。但是現(xiàn)在公司的項(xiàng)目使用的是 HTTP協(xié)議,使用私有加密方式保證數(shù)據(jù)安全。現(xiàn)在也不能馬上改成 HTTPS協(xié)議傳輸。
最終找到以下解決辦法:
在Info.plist中添加 NSAppTransportSecurity 類型 Dictionary 。
在 NSAppTransportSecurity 下添加 NSAllowsArbitraryLoads 類型 Boolean, 值設(shè)為 YES
參考:
App Transport Security support aka apps on iOS 9 don't work #4560
711_networking_with_nsurlsession.pdf
總結(jié):
蘋果正在加大應(yīng)用安全的管控,這個(gè)舉措可以看出蘋果對(duì)信息安全的重視,也暴露出大部分應(yīng)用傳輸數(shù)據(jù)時(shí)都是未經(jīng)過加密的,或使用私有方式加密,以至于蘋果開始對(duì)開發(fā)者提出要求。
私有加密雖然一定程度上是安全的,但是終究不是一個(gè)長(zhǎng)久之計(jì)。全世界這么多安全專家在維護(hù) HTTPS安全,早日使用 HTTPS確保信息安全才是王道!也省去了私有加密協(xié)議的安全隱患!