1.HTTPS
-
UIWebView與HTTPS(一些圖片和參考來自于董鉑然)
在IOS9之后秀存,在不設(shè)置info.plist的情況下,UIWebView直接請(qǐng)求http或者是https證書的加密算法比較低級(jí)別的時(shí)候(例如百度的首頁),會(huì)中斷鏈接并報(bào)錯(cuò)
解決方案:
1. 網(wǎng)頁鏈接升級(jí)成符合加密算法的https
2. 在info.plist中進(jìn)行設(shè)置
-
如何查看訪問的地址加密算法的級(jí)別
1.
2. -
info.plist如何設(shè)置
-
在不要求https的情況下可以讓所有請(qǐng)求都退回到http
針對(duì)與特定的地址進(jìn)行設(shè)置
* 在需要訪問http的地址時(shí)候(例如[簡(jiǎn)書網(wǎng)http://jianshu.com/](http://jianshu.com)),如果直接請(qǐng)求的話會(huì)出現(xiàn)如下的錯(cuò)誤: ![屏幕快照 2015-12-25 下午8.40.18.png](http://upload-images.jianshu.io/upload_images/905600-1b98c004a3a55d1b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 需要早info.plist中針對(duì)簡(jiǎn)書網(wǎng)進(jìn)行設(shè)置: ![屏幕快照 2015-12-25 下午8.42.19.png](http://upload-images.jianshu.io/upload_images/905600-c88d9dd7bea855f1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) NSExceptionAllowsInsecureHTTPLoads:對(duì)上面的域名采用http進(jìn)行訪問。 其他設(shè)置的意思:[參考地址](https://github.com/ChenYilong/iOS9AdaptationTips) NSIncludesSubdomains:適用于這個(gè)特定域名下的所有子域([子域名解釋](http://www.dns0755.net/news/25.html)) NSExceptionRequiresForwardSecrecy:擴(kuò)展可接受的密碼列表:這個(gè)域名可以使用不支持 forward secrecy 協(xié)議的密碼 NSExceptionMinimumTLSVersion:在這里聲明所支持的 TLS 最低版本 在功能上,這些關(guān)鍵字與不含有"ThirdParty"的關(guān)鍵字有同樣的效果柠偶。而且實(shí)際運(yùn)行中所調(diào)用的代碼將會(huì)完全忽略是否使用"ThirdParty"關(guān)鍵字。你應(yīng)該使用適用于你的場(chǎng)景的關(guān)鍵字而不必過多考慮這些。 NSThirdPartyExceptionAllowsInsecureHTTPLoads NSThirdPartyExceptionMinimumTLSVersion NSThirdPartyExceptionRequiresForwardSecrecy 需要注意的是诱担,經(jīng)嘗試info.plist里面設(shè)置的域名和在請(qǐng)求中使用的域名要考慮子域名的情況以免出錯(cuò)毡证。 在實(shí)際測(cè)試的發(fā)現(xiàn)info.plist設(shè)置的沒有問題,但是還是無法加載出來蔫仙,多試了幾次就可以了料睛,不知道是不是使用的是模擬器的原因。 還有一個(gè)需要注意的就是及時(shí)能成功的訪問到這個(gè)http的地址了匀哄,上面的錯(cuò)誤信息還是會(huì)在控制臺(tái)輸入秦效,可能相當(dāng)于起到一個(gè)警告的作用吧。 * 訪問的地址已經(jīng)是https但是簽名算法達(dá)不到IOS9的要求 在這種情況下會(huì)報(bào)這種錯(cuò)誤: ![屏幕快照 2015-12-25 下午8.59.46.png](http://upload-images.jianshu.io/upload_images/905600-f8271c01dc9c2c52.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 本來[百度https://www.baidu.com/](https://www.baidu.com/)正好是這個(gè)情況涎嚼,不過最近百度的簽名算法升級(jí)了....,雖然百度的簽名算法看上去已經(jīng)符合IOS9的要求了阱州,但是webView請(qǐng)求還是失敗,還是報(bào)-9802的錯(cuò)誤,具體的原因就不知道了....(知道的朋友可以分享一下),想要成功的加載出百度的話法梯,就需要如下的設(shè)置: ![屏幕快照 2015-12-25 下午9.25.05.png](http://upload-images.jianshu.io/upload_images/905600-336c684a57b2dc12.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 如果遇到簽名算法不符合的https地址需要針對(duì)這個(gè)地址把NSExceptionRequiresForwardSecrecy設(shè)置為NO苔货,相當(dāng)于忽略簽名算法。 * 所有的要求看上去都符合IOS9的要求就不會(huì)出問題了嗎立哑? 實(shí)際上應(yīng)該不是的夜惭,webView除了加載https://github.com 控制臺(tái)沒有打印錯(cuò)誤,使用https://developer.apple.com/ 測(cè)試的時(shí)候發(fā)現(xiàn)控制臺(tái)還是打印了很多-9802的錯(cuò)誤铛绰。后來嘗試用webView來請(qǐng)求https://www.taobao.com/ 發(fā)現(xiàn)也是請(qǐng)求失敗诈茧,將webView請(qǐng)求的地址打印出來發(fā)現(xiàn),除了請(qǐng)求了https://www.taobao.com/ 這個(gè)地址外還有一個(gè)地址http://m.taobao.com/?sprefer=sypc00 : ![屏幕快照 2015-12-25 下午9.46.48.png](http://upload-images.jianshu.io/upload_images/905600-6738e34f8ca78631.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 由此就猜想捂掰,百度和蘋果的developer網(wǎng)站敢会,可能也是因?yàn)閮?nèi)部的一些請(qǐng)求不符合IOS9的要求,如果不配置就會(huì)導(dǎo)致了webView請(qǐng)求失敗的原因这嚣。
-