iOS 9中默認(rèn)非 http 的網(wǎng)絡(luò)是被禁止的藏斩,我們當(dāng)時(shí)的做法是把App Transport Security Settings下的NSAllowsArbitraryLoads設(shè)置為 YES來(lái)禁用 ATS滥崩。雖有效 ,但過(guò)于粗暴,直接禁用了 ATS,違背了蘋(píng)果爸爸的初衷消约,這估計(jì)也是蘋(píng)果爸爸當(dāng)時(shí)說(shuō)要在17年元旦起不允許我們通過(guò)這個(gè)方法跳過(guò) ATS 的原因。
雖然后來(lái)發(fā)文推遲執(zhí)行這一決策员帮,但是蘋(píng)果爸爸的態(tài)度或粮,卻是比較明朗了。
雖然不能直接禁用 ATS捞高,但是我們可以通過(guò) NSExceptionDomains 來(lái)針對(duì)特定的域名開(kāi)放 http 權(quán)限氯材。
具體方案:
- 在項(xiàng)目中的info.plist中添加 Key:App Transport Security Settings,類(lèi)型為字典類(lèi)型硝岗。
- 然后給它添加一個(gè) Exception Domains氢哮,類(lèi)型為字典類(lèi)型。
- 把需要支持的域添加到 Exception Domains 下辈讶,其中域作為 key命浴,類(lèi)型為字典類(lèi)型娄猫。
- 每個(gè)域下設(shè)置三個(gè)屬性:NSIncludesSubdomains(設(shè)置域下對(duì)應(yīng)的子域名是否可用)贱除、NSExceptionRequiresForwardSecrecy、NSExceptionAllowsInsecureHTTPLoads(設(shè)置是否允許不安全的 http)媳溺。
1.png
提示:系統(tǒng)中用到的所有非 https 的網(wǎng)絡(luò)請(qǐng)求月幌,都要進(jìn)行設(shè)置。比如網(wǎng)絡(luò)圖片可能是放在三方托管服務(wù)器悬蔽,只提供 http 訪問(wèn)扯躺,那么這個(gè)域也是必須要設(shè)置才能獲取到圖片的。