说一说适配HTTPS的纠结与验证

第一:普通请求

最近项目在修改请求为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];

好了终于可以加载出来了。搞定!

你可能感兴趣的:(说一说适配HTTPS的纠结与验证)