前言
自iOS 9起蘋果就開始推薦使用HTTPS,在iOS 9中默認(rèn)是禁止非HTTPS的協(xié)議來訪問網(wǎng)絡(luò)的,但是還是給我我們緩沖的機(jī)會(huì),解決方法:
1、在
Info.plist中添加NSAppTransportSecurity類型Dictionary。
2、在NSAppTransportSecurity下添加NSAllowsArbitraryLoads類型Boolean,值設(shè)為YES。
2016年6月WWDC之后,便傳出從2017年1月1日起蘋果提出所有新提交的App默認(rèn)不允許使用NSAllowsArbitraryLoads來繞過ATS的限制,也就是說強(qiáng)制我們用HTTPS,如果不這樣的話提交App可能會(huì)被拒絕。在2016年即將結(jié)束之際,我們也網(wǎng)站和APP也開始支持HTTPS的工作,但是之前也有傳言說2017年1月1日App Store不會(huì)強(qiáng)制支持HTTPS,事實(shí)確實(shí)如此:
Supporting App Transport Security
App Transport Security (ATS), introduced in iOS 9 and OS X v10.11, improves user security and privacy by requiring apps to use secure network connections over HTTPS. At WWDC 2016 we announced that apps submitted to the App Store will be required to support ATS at the end of the year. To give you additional time to prepare, this deadline has been extended and we will provide another update when a new deadline is confirmed. Learn more about ATS.
不管怎么說我們還是要支持HTTPS,原因三點(diǎn):
1、iOS客戶端強(qiáng)制支持HTTPS以后是必然的趨勢
2、HTTPS協(xié)議解決了很多客戶端和服務(wù)端安全問題
3、領(lǐng)導(dǎo)們很關(guān)注
問題描述
問題一:一些第三方的SDK并沒有及時(shí)支持HTTPS我們?cè)趺唇鉀Q呢?
問題二:如何知道哪些接口是非HTTPS的呢?
解決辦法
- 問題一:
把一些不支持HTTPS的第三方接口添加
NSExceptionDomains白名單中,配置如下:
1、在Info.plist中添加NSAppTransportSecurity類型Dictionary。
2、在NSAppTransportSecurity中添加NSExceptionDomains類型Dictionary。
3、在NSExceptionDomains中添加要支持的域(也就是非HTTPS的接口地址),域作為Key,類型為Dictionary。
4、在每個(gè)域下面添加三個(gè)Boolean類型的屬性,如下:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>qq.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
- 問題二:
1、在
NSAppTransportSecurity下添加NSAllowsArbitraryLoads類型Boolean,值設(shè)為YES,調(diào)試找到非HTTPS接口后記得改成NO。
2、使用Charles抓包,詳細(xì)使用教程請(qǐng)查看:Charles 從入門到精通
3、把抓到的一些非HTTPS的接口添加到白名單中,添加方法請(qǐng)看問題一解決辦法
注意事項(xiàng)
1、抓包的時(shí)候發(fā)現(xiàn)有些圖片的地址是非HTTPS的,也會(huì)導(dǎo)致圖片無法顯示,把地址添加到白名單中即可或協(xié)調(diào)服務(wù)端進(jìn)行修改。
2、友盟統(tǒng)計(jì)、友盟分享、百度地圖等SDK現(xiàn)已支持HTTPS記得更新哦。