天天看點

iOS9 HTTP 不能正常使用的解決辦法iOS9 HTTP 不能正常使用的解決辦法最終找到以下解決辦法:看到很多同學修改後還是不能用添加一下截圖:補充說明參考:總結:

推薦 2 推薦

收藏 29 收藏,50k 浏覽

今天更新<code>Xcode 7.0 bata</code>發現網絡通路失敗。

輸出錯誤資訊

新特性要求App内通路的網絡必須使用<code>HTTPS</code>協定。

但是現在公司的項目使用的是<code>HTTP</code>協定,使用私有加密方式保證資料安全。現在也不能馬上改成<code>HTTPS</code>協定傳輸。

在Info.plist中添加<code>NSAppTransportSecurity</code>類型<code>Dictionary</code>。

在<code>NSAppTransportSecurity</code>下添加<code>NSAllowsArbitraryLoads</code>類型<code>Boolean</code>,值設為<code>YES</code>

在Filter中搜尋<code>Info.plist</code>,選擇<code>Info.plist</code>進行編輯

iOS9 HTTP 不能正常使用的解決辦法iOS9 HTTP 不能正常使用的解決辦法最終找到以下解決辦法:看到很多同學修改後還是不能用添加一下截圖:補充說明參考:總結:

按照上面提到的方式添加資訊,正确的修改會看到下圖這個樣子,注意類型<code>NSAppTransportSecurity</code>為<code>Dictionary</code>,<code>NSAllowsArbitraryLoads</code>為<code>Boolean</code>,複制粘貼的時候,不要多了空格,segment fault 頁面上直接複制,經常會多一個出空格!

iOS9 HTTP 不能正常使用的解決辦法iOS9 HTTP 不能正常使用的解決辦法最終找到以下解決辦法:看到很多同學修改後還是不能用添加一下截圖:補充說明參考:總結:

注意️,單元測試下面也有一個<code>Info.plist</code>,修改那個檔案是沒有作用的!

上面介紹的方法雖然解決了網絡通路的問題,但是蘋果提供的安全保障也被關閉了。

不過,按照國内的現狀,關閉這個限制也許是更實際的做法。

至于原因就太多了,第三方SDK(幾乎都是通路<code>HTTP</code>),合作夥伴接入(不能要求它們一定要支援HTTPS)。

如果你的App沒有受到這些原因的限制,還是更建議你增加<code>HTTPS</code>支援,而不是關閉限制。

請大家根據項目的實際情況作調整。

出于安全考慮我們提倡使用<code>HTTPS</code>,退而求其次,優先考慮使用<code>例外</code>:将允許通路的域加入到配置清單中

對于實在不支援<code>HTTPS</code>的應該首先考慮添加<code>例外</code>

添加例外的方式也很簡單:

左鍵<code>Info.plist</code>選擇<code>open with source code</code>

然後添加類似如下的配置:

根據自己需要的域名修改, NSIncludeSubdomains 顧名思義是包括子域的意思。

<a target="_blank" href="https://github.com/meteor/meteor/issues/4560">App Transport Security support aka apps on iOS 9 don't work #4560</a>

<a target="_blank" href="http://devstreaming.apple.com/videos/wwdc/2015/711y6zlz0ll/711/711_networking_with_nsurlsession.pdf?dl=1">711_networking_with_nsurlsession.pdf</a>

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

私有加密雖然一定程度上是安全的,但是終究不是一個長久之計。全世界這麼多安全專家在維護<code>HTTPS</code>安全,早日使用<code>HTTPS</code>確定資訊安全才是王道!也省去了私有加密協定的安全隐患!