標籤:image 補充 網域名稱 open googl 問題 lease span ict
1190000002933776
今天升級Xcode 7.0 bata發現網路訪問失敗。
輸出錯誤資訊
The resource could not be loaded because the App Transport Security policy requires the use of asecure connection.
Google後查證,iOS9引入了新特性App Transport Security (ATS)。詳情:App Transport Security (ATS)
新特性要求App內訪問的網路必須使用HTTPS協議。
但是現在公司的項目使用的是HTTP協議,使用私人加密方式保證資料安全。現在也不能馬上改成HTTPS協議傳輸。
最終找到以下解決辦法:
在Info.plist中添加NSAppTransportSecurity類型Dictionary。
在NSAppTransportSecurity下添加NSAllowsArbitraryLoads類型Boolean,值設為YES
看到很多同學修改後還是不能用添加一下:
在Filter中搜尋Info.plist,選擇Info.plist進行編輯
按照上面提到的方式添加資訊,正確的修改會看到這個樣子,注意類型NSAppTransportSecurity為Dictionary,NSAllowsArbitraryLoads為Boolean,複製粘貼的時候,不要多了空格,segment fault 頁面上直接複製,經常會多一個出空格!
注意??,單元測試下面也有一個Info.plist,修改那個檔案是沒有作用的!
補充說明
上面介紹的方法雖然解決了網路訪問的問題,但是蘋果提供的安全保障也被關閉了。
不過,按照國內的現狀,關閉這個限制也許是更實際的做法。
至於原因就太多了,第三方SDK(幾乎都是訪問HTTP),夥伴接入(不能要求它們一定要支援HTTPS)。
如果你的App沒有受到這些原因的限制,還是更建議你增加HTTPS支援,而不是關閉限制。
請大家根據項目的實際情況作調整。
出於安全考慮我們提倡使用HTTPS,退而求其次,優先考慮使用例外:將允許訪問的網域加入到配置列表中
@banxi1988 補充了配置的方法
對於實在不支援HTTPS的應該首先考慮添加例外
添加例外的方式也很簡單:
左鍵Info.plist選擇open with source code
然後添加類似如下的配置:
<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>qq.com</key> <dict> <key>NSIncludesSubdomains</key> <true/> </dict> <key>sina.com.cn</key> <dict> <key>NSIncludesSubdomains</key> <true/> </dict> </dict> </dict>
根據自己需要的網域名稱修改, NSIncludeSubdomains 顧名思義是包括子域的意思。
react-native 在iOS上使用http連結的圖片地址不顯示| iOS9 & iOS10 HTTP 不能正常使用的解決辦法