iOS 9 HTTP不能正常使用的解決方法


相信很多Apple Developer在升級到Xcode 7后會出現網絡訪問失敗,一般會在控制臺出現如下的錯誤信息:

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內訪問的網絡必須使用HTTPS協議。

但是現在很多公司的項目使用的是HTTP協議,使用私有加密方式保證數據安全。現在也不能馬上改成HTTPS協議傳輸。

經過查找,得到以下兩種解決辦法:

1.允許任意鏈接使用HTTP協議

1.1 在Info.plist中添加NSAppTransportSecurity, 類型Dictionary

1.2 在NSAppTransportSecurity下添加NSAllowsArbitraryLoads, 類型Boolean, 值設為YES

2.允許特定鏈接使用HTTP協議

2.1 在Info.plist中添加NSAppTransportSecurity, 類型Dictionary

2.2 在NSAppTransportSecurity下添加NSExceptionDomains, 類型Dictionary

2.3 在NSExceptionDomains下添加去掉http://的鏈接主域名(如:omdbapi.com),? 類型Dictionary

2.4 在以鏈接為Key的Dictionary下添加NSIncludesSubdomainsNSTemporaryExceptionAllowsInsecureHTTPLoads , 類型均為Boolean, 值均設為YES

如果有多個這樣的鏈接,則重復2.3、2.4

總結:

蘋果正在加大應用安全的管控,這個舉措可以看出蘋果對信息安全的重視,也暴露出大部分應用傳輸數據時都是未經過加密的,或使用私有方式加密,以至于蘋果開始對開發者提出要求。

私有加密雖然一定程度上是安全的,但是終究不是一個長久之計。全世界這么多安全專家在維護HTTPS安全,早日使用HTTPS確保信息安全才是王道!也省去了私有加密協議的安全隱患!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容