iOS ASIHTTPRequest、 NSURLRequest、UIWebView、WKWebView跳过安全认证请求https

一 .ASIHTTPRequest

 ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
 [request setValidatesSecureCertificate:NO]
ASIFormDataRequest *request = [[ASIFormDataRequest alloc] initWithURL:[NSURL URLWithString:@""]];
[request setValidatesSecureCertificate:NO];

[request setValidatesSecureCertificate:NO];

设置跳过安全认证。

二.NSURLRequest,UIWebView

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@""]];
[NSURLConnection connectionWithRequest:request delegate:self];

设置代理

<NSURLConnectionDelegate>

实现代理方法

- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace{
    return [protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust];
}

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge{
    if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) {
        [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];
        [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];
    }
}

三.NSURLRequest,WKWebView

再添加WKWebView的一个代理方法

- (void)webView:(WKWebView *)webView didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential * _Nullable credential))completionHandler{
    if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) {
        NSURLCredential *card = [[NSURLCredential alloc]initWithTrust:challenge.protectionSpace.serverTrust];
        completionHandler(NSURLSessionAuthChallengeUseCredential,card);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_39339407/article/details/81974135