UIWebView加載Https網(wǎng)頁報錯

ATS設(shè)置

按照慣例寫一個UIWebView虫给,用來加載網(wǎng)頁:

_webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
_webView.delegate = self;
[self.view addSubview:_webView];
NSURL *url = [NSURL URLWithString:@"https://github.com/"];
_request = [NSURLRequest requestWithURL:url];
[_webView loadRequest:_request];

run一下看看加載出來了嗎里烦?如果發(fā)現(xiàn)屏幕一片白并沒有出現(xiàn)網(wǎng)頁內(nèi)容加袋,不要驚訝速侈,看看你的控制臺是不是報出以下錯誤:

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)

這個怎么解決呢?沒錯ATS設(shè)置:去plist文件里添加一項(xiàng)App Transport Security Settings剪返,它是個字典類型废累,給它增加一對鍵值,鍵:Allow Arbitrary Loads 脱盲,值設(shè)為YES邑滨。

以上,搞定ATS設(shè)置钱反,網(wǎng)頁成功加載了:

Simulator Screen Shot.png

如果你的網(wǎng)頁是self signed website掖看,那么你的屏幕應(yīng)該還是一片白,并且控制臺又報錯:

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)

注意:這兩次錯誤并不是一樣的,后面數(shù)字代碼不同
(并不太清楚這個碼代表的意思面哥,有知道的朋友請留言告知哎壳,感謝。)

NSURLConnection

使用webview加載自簽名https站點(diǎn)的時候尚卫,必須在請求的時候?qū)⒃撜军c(diǎn)設(shè)置為安全的归榕,才能繼續(xù)訪問。所以我們需要在webview開始加載網(wǎng)頁的時候首先判斷判斷該站點(diǎn)是不是https站點(diǎn)焕毫,如果是的話蹲坷,先讓他暫停加載,用NSURLConnection 來訪問改站點(diǎn)邑飒,然后再身份驗(yàn)證的時候循签,將該站點(diǎn)置為可信任站點(diǎn)。然后在用webview重新加載請求疙咸。

直接上代碼:

#pragma mark - UIWebViewDelegate

// Note: This method is particularly important. As the server is using a self signed certificate,
// we cannot use just UIWebView - as it doesn't allow for using self-certs. Instead, we stop the
// request in this method below, create an NSURLConnection (which can allow self-certs via the delegate methods
// which UIWebView does not have), authenticate using NSURLConnection, then use another UIWebView to complete
// the loading and viewing of the page. See connection:didReceiveAuthenticationChallenge to see how this works.
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
{
    NSLog(@"Did start loading: %@ auth:%d", [[request URL] absoluteString], _authenticated);

    if (!_authenticated) {

        _authenticated = NO;

        _urlConnection = [[NSURLConnection alloc] initWithRequest:_request delegate:self];

        [_urlConnection start];

        return NO;
    }
    return YES;
}

#pragma mark - NURLConnection delegate

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;
{
    NSLog(@"WebController Got auth challange via NSURLConnection");

    if ([challenge previousFailureCount] == 0)
    {
        _authenticated = YES;

        NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];

        [challenge.sender useCredential:credential forAuthenticationChallenge:challenge];

    } else
    {
        [[challenge sender] cancelAuthenticationChallenge:challenge];
    }
}

// We use this method is to accept an untrusted site which unfortunately we need to do, as our PVM servers are self signed.
- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace
{
    return [protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust];
}

#pragma mark - NSURLConnectionDataDelegate

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;
{
    NSLog(@"WebController received response via NSURLConnection");

    // remake a webview call now that authentication has passed ok.
    _authenticated = YES;
    [_web loadRequest:_request];

    // Cancel the URL connection otherwise we double up (webview + url connection, same url = no good!)
    [_urlConnection cancel];
}

以上設(shè)置县匠,可成功加載自簽名網(wǎng)頁。

但是,雖然加載成功乞旦,但是控制臺還是報了以下錯誤:

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9843)

最后

推薦參考鏈接:
stackoverflow Q1
stackoverflow Q2

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贼穆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子兰粉,更是在濱河造成了極大的恐慌故痊,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件玖姑,死亡現(xiàn)場離奇詭異愕秫,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)焰络,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門戴甩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人闪彼,你說我怎么就攤上這事甜孤。” “怎么了畏腕?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵缴川,是天一觀的道長。 經(jīng)常有香客問我郊尝,道長二跋,這世上最難降的妖魔是什么战惊? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任流昏,我火速辦了婚禮,結(jié)果婚禮上吞获,老公的妹妹穿的比我還像新娘况凉。我一直安慰自己,他們只是感情好各拷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布刁绒。 她就那樣靜靜地躺著,像睡著了一般烤黍。 火紅的嫁衣襯著肌膚如雪知市。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天速蕊,我揣著相機(jī)與錄音嫂丙,去河邊找鬼。 笑死规哲,一個胖子當(dāng)著我的面吹牛跟啤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼隅肥,長吁一口氣:“原來是場噩夢啊……” “哼竿奏!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起腥放,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤泛啸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后秃症,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體平痰,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年伍纫,在試婚紗的時候發(fā)現(xiàn)自己被綠了宗雇。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡莹规,死狀恐怖赔蒲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情良漱,我是刑警寧澤舞虱,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站母市,受9級特大地震影響矾兜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜患久,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一椅寺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蒋失,春花似錦返帕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至铣卡,卻和暖如春链韭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背煮落。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工敞峭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人州邢。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓儡陨,卻偏偏與公主長得像褪子,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子骗村,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,163評論 25 707
  • 很可能你的應(yīng)用是與一個支持HTTPS傳輸數(shù)據(jù)的服務(wù)器交互嫌褪,但是并沒有使用TLS 1.2或更高。在這種情況下胚股,你定義...
    Www劉閱讀 3,071評論 0 5
  • 教室是一個盒子 里面的人想離開 外面的人想回來 海森堡測不準(zhǔn)原理:人們不能在同一時刻準(zhǔn)確地測量到粒子運(yùn)動的位置和速...
    撫琴碎漣漪閱讀 458評論 0 1
  • 豐盛日記-26 我擁有謙虛的態(tài)度笼痛,虛心請教學(xué)習(xí); 我擁有自黑的逗比精神琅拌,丸子頭描述成頭頂“一坨黃金”(其實(shí)是沒洗頭...
    慧玲學(xué)閱讀 175評論 0 0
  • 在這個世界上有些人很聰明缨伊,有些人很愚笨,我說的笨不是說腦子笨什么都不知道的那種进宝,而是對有些事情并沒有那么多的想法的...
    怕咯來咯魔龍閱讀 480評論 0 0