ATS(App Transport Security)對HTTP協議屏蔽引起的問題


一、問題描述

  在學習網絡處理的過程,發現代碼都沒錯,運行時會收到如下錯誤提示:

App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.

二、問題分析

  應用程序采取了明文HTTP協議(http://)。WWDC 15,蘋果引入了一項隱私保護功能ATS(App Transport Security),是 Apple 在推進網絡通訊安全的一個重要方式。ATS屏蔽HTTP明文傳輸協議資源加載,因為http明文傳輸協議不安全,連接必須改成更安全的HTTPS協議。在 iOS 9 和 OSX 10.11中,默認情況下非HTTPS的網絡訪問是被禁止的。如果使用HTTP協議連接,會拋出一個錯誤。在Info.plist添加類型為Dictionary的NSAppTransportSecurity 並且將類型為 Boolean的NSAllowsArbitraryLoads 設置為 YES 即可來禁用 ATS,從而繼續使用HTTP明文傳輸。

  在WWDC 2016開發者大會上,蘋果宣布了一個最后期限:到2017年1月1日 App Store中的所有應用都必須啟用 App Transport Security安全功能。App Transport Security(ATS)是蘋果在iOS 9中引入的一項隱私保護功能,屏蔽明文HTTP資源加載,連接必須經過更安全的HTTPS。蘋果目前允許開發者暫時關閉ATS,可以繼續使用HTTP連接,但到年底所有官方商店的應用都必須強制性使用ATS。

  WWDC 16 ,Apple將在iOS 10和macOS 10.12收緊對HTTP的訪問限制。從2017年1月1日起,所有新提交到App Store中的App都必須啟用ATS 安全功能,默認是不允許使用 NSAllowsArbitraryLoads 來繞過 ATS 限制,保證 Spp 的網絡請求都是 HTTPS 加密的,否則可能會在應用審核時遇到麻煩。

 

三、問題解決

方法一:直接打開Info.plist,插入以下代碼

<key>NSAppTransportSecurity</key> <dict>   <key>NSAllowsArbitraryLoads</key>   <true/> </dict>

具體位置如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        ...
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
        ...
</dict>
</plist>

方法二:Xcode打開Info.plist ,添加類型為Dictionary的NSAppTransportSecurity 並且將類型為 Boolean的NSAllowsArbitraryLoads 設置為 YES 即可來禁用 ATS,從而繼續使用HTTP明文傳輸。

info.plist


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM