第一:普通请求
最近项目在修改请求为HTTPS,开始真是纠结无比,查询了很多东西,但是依然觉得不踏实,感觉那里不对劲一样。
这里的设置是这样的,其他的一般不需要,如果用的AFN请求self.securityPolicy = [AFSecurityPolicy defaultPolicy]
// 客户端是否信任非法证self.securityPolicy.allowInvalidCertificates = YES;
// 是否在证书域字段中验证域名[self.securityPolicy setValidatesDomainName:NO];
然后,如果没啥问题。https的请求就可以正常进行了。。
第二:WebView加载HTTPS的网页
如果项目中web view的加载。然后也是https的。你可能会发现有NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813) error:The certificate for this server is invalid. You might be connecting to a server that is pretending to be “XXX.XX.X.XX” which could put your confidential information at risk
这里信息是说明你的webview加载需要你支持https验证;这个问题不多追求,我最终的简便的解决方式如下:
创建个NSURLRequst 类别
@interface NSURLRequest (NSURLRequestSSLY)
+(BOOL)allowsAnyHTTPSCertificateForHost:(NSString*)host;
@end
#import "NSURLRequest+NSURLRequestSSLY.h"
@implementation NSURLRequest (NSURLRequestSSLY)
+(BOOL)allowsAnyHTTPSCertificateForHost:(NSString*)host
{
return YES;
}
@end
然后在有加载webView的页面执行:[NSURLRequest allowsAnyHTTPSCertificateForHost:your.host];
好了终于可以加载出来了。搞定!