大致写下适配Https时遇到的坑,做完服务器迁移一直通宵到现在,表示无力再多做详解,只放一些常见问题的解决方案吧
问题一、Https请求失败
1. NetManager初始化时可参考如下设置(因为我没有使用证书哎)
// https 信任无效证书并取消域名验证
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy defaultPolicy];
securityPolicy.allowInvalidCertificates = YES;
securityPolicy.validatesDomainName = NO;
netManager.securityPolicy = securityPolicy;
2. 设置info.plist一些key和value
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>app.xxxx.cn</key> // 更改为自己服务器域名
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
问题二、 UIWebView加载HTTPS 链接加载失败
解决方案: 在webView加载页面的控制器内添加类声明和实现
vc.h文件内添加:
@interface NSURLRequest (IgnoreSSL)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString*)host;
@end
vc.m 文件内添加:
@implementation NSURLRequest (IgnoreSSL)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString*)host {
return YES;
}
@end
这样就可以了,如果还不行的话,可以参考上面info.plist添加的参数
最后一个小问题:适配HTTPS之后,无法加载http开头的网络图片
解决方案: 使用最新版本SDWebImage
[imgView sd_setImageWithURL:[NSURL URLWithString:urlStr] placeholderImage:imageSLNamed(@"pic2") options:SDWebImageAllowInvalidSSLCertificates];
要注意的是最后一个参数option的设置
options:SDWebImageAllowInvalidSSLCertificates
大致就这三个问题,下班肥家睡觉先..