App Transport Security,簡短的說就是ATS,是iOS9和OS X El Capitan的一個新特性。App Transport Security 的目標是提高Apple 操作係統的安全性以及在此操作係統上運行的任何應用的安全性。基於HTTP傳輸數據的網絡請求都是明文。開啟App Transport Security後,網絡傳輸自動通過HTTPS傳輸而不是HTTP。App Transport Security要求TLS (Transport Layer Security) 1.2或者更高。關於App Transport Security,每個應用都屬於4個大類當中的一類。隻有HTTPS如果你的應用隻基於支持HTTPS的服務器,那麼你太幸運了。你的應用不需要做任何改變。但是,注意App Transport Security要求TLS 1.2而且它要求站點使用支持forward secrecy協議的密碼。證書也要求是符合ATS規格的。因此慎重檢查與你的應用交互的服務器是不是符合ATS的要求非常重要。混合你的應用與一個不符合ATS要求的服務器工作是很有可能的。在這種情況下,你需要告訴操作係統哪些站點是涉及到的然後在你的應用的 Info.plist文件中指明哪些要求沒有達到。這意味著對於每個與你應用交互的站點, 除了在你的應用的 Info.plist中聲明的那些以外不強製要求App Transport Security,其它的都需要。你可以使用很多的預定義的keys值來配置例外(exceptions)。api.insecuredomain我們定義的第一個例外告訴ATS當與這個子域交互的時候撤銷了必須使用HTTPS的要求。注意這個僅僅針對在例外中聲明了的子域。非常重要的一點是要理解NSExceptionAllowsInsecureHTTPLoads關鍵字並不僅僅隻是與使用HTTPS相關。這個例外指明了對於那個域名,所有的App Transport Security的要求都被撤銷了。cdn.domain很可能你的應用是與一個支持HTTPS傳輸數據的服務器交互,但是並沒有使用TLS 1.2或更高。在這種情況下,你定義一個例外,它指明應該使用的最小的TLS的版本。這比完全撤銷那個域名的App Transport Security要更好更安全。thatotherdomainNSIncludesSubdomains關鍵字告訴 App Transport Security這個例外適用於這個特定域名的所有子域。這個例外還進一步通過擴展可接受的密碼列表來定義這個域名可以使用不支持forward secrecy(NSExceptionRequiresForwardSecrecy) ?協議的密碼。想了解更多關於forward secrecy的信息,我推薦你去看這個文章?Apple‘s technote。撤銷如果你在創建一個網頁瀏覽器,那麼你有一個更大的麻煩。因為你不可能知道你的用戶將要訪問那個網頁,你不可能指明這些網頁是否支持ATS要求且在HTTPS上傳輸。在這種情況下,除了全部撤銷 App Transport Security 沒有其它辦法。非常重要的是你要明確的指明撤銷 App Transport Security。牢記App Transport Security是默認強製執行的。在你的應用的Info.plist, 文件中,為NSAppTransportSecurity關鍵值添加一個字典。這個字典應該包括一個關鍵字,NSAllowsArbitraryLoads,以及它的值要被設置為YES。第四個大類是當你的應用撤消了App Transport Security,,但同時定義了一些例外。這非常有用就是當你的應用從很多的服務器上取數據,但是也要與一個你可控的API交互。在這種情況下,在應用的Info.plist文件中指定任何加載都是被允許的,但是你也指定了一個或多個例外來表明哪些是必須要求 App Transport Security的。望采納