今天升級Xcode 7.0 bata發現網絡訪問失敗。
輸出錯誤信息
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內訪問的網絡必須使用HTTPS協議。
但是現在公司的項目使用的是HTTP協議,使用私有加密方式保證數據安全。現在也不能馬上改成HTTPS協議傳輸。
最終找到以下解決辦法:
在Info.plist中添加NSAppTransportSecurity
類型Dictionary
。
在NSAppTransportSecurity
下添加NSAllowsArbitraryLoads
類型Boolean
,值設為YES
。
參考:
App Transport Security support aka apps on iOS 9 don't work #4560
711_networking_with_nsurlsession.pdf
總結:
蘋果正在加大應用安全的管控,這個舉措可以看出蘋果對信息安全的重視,也暴露出大部分應用傳輸數據時都是未經過加密的,或使用私有方式加密,以至于蘋果開始對開發者提出要求。
私有加密雖然一定程度上是安全的,但是終究不是一個長久之計。全世界這么多安全專家在維護HTTPS安全,早日使用HTTPS確保信息安全才是王道!也省去了私有加密協議的安全隱患!