博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS Error Domain=NSURLErrorDomain Code=-999 "cancelled" 解决办法
阅读量:5943 次
发布时间:2019-06-19

本文共 1811 字,大约阅读时间需要 6 分钟。

先上我这儿成功的代码

- (void)testATS {    //先导入证书,找到证书的路径    NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"cert" ofType:@"cer"];    NSData *certData = [NSData dataWithContentsOfFile:cerPath];        //AFSSLPinningModeNone 这个模式表示不做 SSL pinning,只跟浏览器一样在系统的信任机构列表里验证服务端返回的证书。若证书是信任机构签发的就会通过,若是自己服务器生成的证书,这里是不会通过的。    //AFSSLPinningModeCertificate 这个模式表示用证书绑定方式验证证书,需要客户端保存有服务端的证书拷贝,这里验证分两步,第一步验证证书的域名/有效期等信息,第二步是对比服务端返回的证书跟客户端返回的是否一致。    //AFSSLPinningModePublicKey 这个模式同样是用证书绑定方式验证,客户端要有服务端的证书拷贝,只是验证时只验证证书里的公钥,不验证证书的有效期等信息。只要公钥是正确的,就能保证通信不会被窃听,因为中间人没有私钥,无法解开通过公钥加密的数据。        AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];    if (certData) {        securityPolicy.pinnedCertificates = @[certData];    }    AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager];    [sessionManager setSecurityPolicy:securityPolicy];    sessionManager.responseSerializer = [AFJSONResponseSerializer serializer];    sessionManager.responseSerializer.acceptableContentTypes = [sessionManager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];    NSString *urlStr = @"https://huifang.tech/info.php";    [sessionManager GET:urlStr parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {DDLog(@"responseObject = %@", responseObject);    } failure:^(NSURLSessionDataTask *task, NSError *error) {        DDLog(@"error = %@", error);    }];}

因为之前使用了 AFSSLPinningModeCertificate 模式

AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
改成现在的 AFSSLPinningModeNone 模式,解决问题。
因为我的证书是 Symantec 的 DV SSL 证书,所以 securityPolicy 的 allowInvalidCertificates 和 validatesDomainName 属性都是默认值?。自签的还没试过。
参考链接:

蛋疼的自己的 hexo 搭建的博客很久没弄,今天给弄成 404 了= =。。。先放这儿存个档吧。

2016-12-07 10:59:52更新:

博客好了Y(^o^)Y

转载地址:http://ciqtx.baihongyu.com/

你可能感兴趣的文章
“TNS-03505:无法解析名称”问题解决一例
查看>>
LeetCode - Longest Common Prefix
查看>>
Android图片处理
查看>>
2015年第21本:万万没想到,用理工科思维理解世界
查看>>
大家谈谈公司里的项目经理角色及职责都是干什么的?
查看>>
剑指offer
查看>>
Velocity魔法堂系列二:VTL语法详解
查看>>
NopCommerce架构分析之八------多语言
查看>>
转:Eclipse自动补全功能轻松设置
查看>>
ES6新特性:Javascript中的Reflect对象
查看>>
hibernate逆向工程生成的实体映射需要修改
查看>>
mysql update操作
查看>>
Robots.txt - 禁止爬虫(转)
查看>>
MySQL数据库
查看>>
项目分析_xxoo-master
查看>>
SQLServer2012自增列值跳跃的问题
查看>>
ViewBag对象的更改
查看>>
Mysql 监视工具
查看>>
hdu1025 Constructing Roads In JGShining's Kingdom(二分+dp)
查看>>
Android PullToRefreshListView和ViewPager的结合使用
查看>>