欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-19 14:02:04
...

一 .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);
    }
}