相信很多Apple Developer在升級到Xcode 7后會出現(xiàn)網(wǎng)絡訪問失敗,一般會在控制臺出現(xiàn)如下的錯誤信息:
The resource could not be loaded because the App Transport Security policy requires theuseofa secureconnection.
這是因為iOS 9引入了新特性App Transport Security (ATS)愈涩。詳情:https://developer.apple.com/library/prerelease/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS9.html#//apple_ref/doc/uid/TP40016198-SW1
新特性要求App內(nèi)訪問的網(wǎng)絡必須使用HTTPS協(xié)議筑煮。
但是現(xiàn)在很多公司的項目使用的是HTTP協(xié)議,使用私有加密方式保證數(shù)據(jù)安全∮担現(xiàn)在也不能馬上改成HTTPS協(xié)議傳輸。
經(jīng)過查找,得到以下兩種解決辦法:
1.允許任意鏈接使用HTTP協(xié)議
1.1 在Info.plist中添加NSAppTransportSecurity, 類型Dictionary推溃。
1.2 在NSAppTransportSecurity下添加NSAllowsArbitraryLoads, 類型Boolean, 值設為YES
2.允許特定鏈接使用HTTP協(xié)議
2.1 在Info.plist中添加NSAppTransportSecurity, 類型Dictionary。
2.2 在NSAppTransportSecurity下添加NSExceptionDomains, 類型Dictionary届腐。
2.3 在NSExceptionDomains下添加去掉http://的鏈接主域名(如:omdbapi.com),? 類型Dictionary铁坎。
2.4 在以鏈接為Key的Dictionary下添加NSIncludesSubdomains 和 NSTemporaryExceptionAllowsInsecureHTTPLoads , 類型均為Boolean, 值均設為YES
如果有多個這樣的鏈接,則重復2.3犁苏、2.4
總結(jié):
蘋果正在加大應用安全的管控硬萍,這個舉措可以看出蘋果對信息安全的重視,也暴露出大部分應用傳輸數(shù)據(jù)時都是未經(jīng)過加密的围详,或使用私有方式加密朴乖,以至于蘋果開始對開發(fā)者提出要求祖屏。
私有加密雖然一定程度上是安全的,但是終究不是一個長久之計买羞。全世界這么多安全專家在維護HTTPS安全袁勺,早日使用HTTPS確保信息安全才是王道!也省去了私有加密協(xié)議的安全隱患畜普!