react-native 在iOS上使用http連結的圖片地址不顯示| iOS9 & iOS10 HTTP 不能正常使用的解決辦法

來源:互聯網
上載者:User

標籤: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協議傳輸。

最終找到以下解決辦法:
  1. 在Info.plist中添加NSAppTransportSecurity類型Dictionary

  2. NSAppTransportSecurity下添加NSAllowsArbitraryLoads類型Boolean,值設為YES

看到很多同學修改後還是不能用添加一下:
  1. 在Filter中搜尋Info.plist,選擇Info.plist進行編輯

  2. 按照上面提到的方式添加資訊,正確的修改會看到這個樣子,注意類型NSAppTransportSecurityDictionaryNSAllowsArbitraryLoadsBoolean,複製粘貼的時候,不要多了空格,segment fault 頁面上直接複製,經常會多一個出空格!

  3. 注意??,單元測試下面也有一個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 不能正常使用的解決辦法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.