解決問題
當(dāng)無法加載http圖片或者鏈接的時候,百度到一波需要如下的設(shè)置:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
一直以來這樣設(shè)置都沒有問題
??但是篙程,最近發(fā)現(xiàn),自己App中的微信頭像(微信登錄返回的頭像地址的http開頭)無法加載顯示别厘,打印了錯誤發(fā)現(xiàn)是
The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.
字面意思就是無法加載HTTP的圖片虱饿。
百度了很多都是說設(shè)置NSAllowsArbitraryLoads為true。但是我明明設(shè)置了触趴,而且之前是可以的為什么最近不可以氮发。因為自己最近換了微信頭像,還以為和我換了頭像有關(guān)系冗懦。爽冕。。披蕉。
最后看到歪果兄dei說的一個答案颈畸。
具體鏈接 --> stackoverflow.com
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>yourdomain.com</key>
<dict>
<key>NSExceptionAllowInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
然后就可以了G八!承冰!
如果還是不行可以這樣
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>yourdomain.com</key>
<dict>
<key>NSExceptionAllowInsecureHTTPLoads</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
內(nèi)容解釋
NSAllowsArbitraryLoads
設(shè)置為TURE的話华弓,就會使得除了開發(fā)者在NSExceptionDomains里面配置的域名以外所有的網(wǎng)絡(luò)連接不受限制。
NSAllowsArbitraryLoadsInWebContent
如果你設(shè)置為TURE的話,系統(tǒng)會禁用對來自Web視圖的請求的所有ATS限制困乒,也就是你的WebView的請求不不一定需要HTTPS寂屏,APP就可以使用嵌入式瀏覽器來顯示任意內(nèi)容,但是應(yīng)用的其他部分還是需要用ATS娜搂。
NSExceptionDomains
NSExceptionDomains其實是相當(dāng)于NSAllowsArbitraryLoads的一個子集迁霎。后者是全局的作用,而前者主要是用于對某些域名的限制作用百宇。他的主要作用其實就是用于們自簽名的證書考廉。
NSExceptionDomains字典里面各鍵的值意義如下。
- NSIncludesSubdomains
默認(rèn)為FALSE,如果設(shè)置為TURE携御,則表示當(dāng)前設(shè)置域名的所有子域名也使用同樣的配置
- NSExceptionAllowInsecureHTTPLoads
允許不安全的HTTP請求昌粤,這里所謂的不安全,不代表改變了 Transport Layer Security (TLS)或是事HTTPS的請求啄刹。所謂的不安全主要是因為使用自簽名的證書涮坐,沒有經(jīng)過CA認(rèn)證所以蘋果并不知道是不是安全的,如果開發(fā)者允許那么蘋果也允許加載誓军。
- NSExceptionRequiresForwardSecrecy
默認(rèn)值為TURE袱讹,如果設(shè)置為FALSE,則允許不支持完全前向保密(PFS)的TLS密碼(對于指定的域名)昵时。
- NSTemporaryExceptionAllowsInsecureHTTPLoads
默認(rèn)值是FALSE捷雕,如果設(shè)置為TURE,則表示允許App進行不安全的HTTP請求
好好學(xué)習(xí)壹甥,天天向上救巷。<( ̄oo, ̄)/