https://m.baidu.com/from=1014517c/bd_page_type=1/
答案:2 悬赏:0 手机版
解决时间 2021-02-07 02:09
- 提问者网友:蓝莓格格巫
- 2021-02-06 06:31
https://m.baidu.com/from=1014517c/bd_page_type=1/
最佳答案
- 五星知识达人网友:詩光轨車
- 2021-02-06 07:51
NSURL *url = [NSURL URLWithString:@"https://www.google.com"];
AFHTTPRequestOperationManager *requestOperationManager = [[AFHTTPRequestOperationManager alloc]initWithBaseURL:url];
dispatch_queue_t requestQueue = dispatch_create_serial_queue_for_name("kRequestCompletionQueue");
requestOperationManager.completionQueue =requestQueue;
AFSecurityPolicy * securityPolicy =[AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
//allowInvalidCertificates 是否允许无效证书(也就是自建的证书),默认为NO
//如果是需要验证自建证书,需要设置为YES
securityPolicy.allowInvalidCertificates =YES;
//validatesDomainName 是否需要验证域名,默认为YES;
//如设成NO的话,即服务器使用其他可信任机构颁发的证书,也可以建立连接,这个非常危险,建议打开。
//因为SSL证书上的域名是独立的,假如证书上绑定的域名是www.domain.com,那么mail.domain.com是无法验证通过的;如果需要同时验证主域名和子域名,可以申请通配符的域名*.domain.com来解决,即证书上绑定domain.com下的所有二级子域。
securityPolicy.validatesDomainName = YES;
//validatesCertificateChain 是否验证整个证书链,默认为YES
//设置为YES,会将服务器返回的TrustObject上的证书链与本地导入的证书进行对比。
//假如是信任的CA所签发的证书,则建议关闭该验证,因为整个证书链一一比对是完全没有必要(请查看源代码);
securityPolicy.validatesCertificateChain =NO;
requestOperationManager.securityPolicy =securityPolicy;
另afnetworking 3.0.0以上版本用的是AFHTTPSessionManager
AFHTTPSessionManager * manager =[AFHTTPSessionManager manager];
NSString * cerPath = [[NSBundle mainBundle]pathForResource:@"server" ofType:@"cer"];
NSData * cerData = [NSData dataWithContentsOfFile:cerPath];
NSLog(@"%@", cerData);
manager.securityPolicy = [AFSecurityPolicypolicyWithPinningMode:AFSSLPinningModeCertificate withPinnedCertificates:[[NSArrayalloc] initWithObjects:cerData, nil]];
manager.securityPolicy.allowInvalidCertificates = YES;
[manager.securityPolicy setValidatesDomainName:NO];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer= [AFJSONResponseSerializer serializer];
NSDictionary * parameter = @{@"username":self.username,@"password":self.password};
[manager POST:@"https://192.168.1.4:9777" parameters:parametersuccess:^(NSURLSessionDataTask * task, id responseObject) {
NSLog(@"success %@", responseObject);
}
failure:^(NSURLSessionDataTask * task, NSError * error) {
NSLog(@"failure %@", error);
}]
NSAppTransportSecurity
NSAllowsArbitraryLoads //设置为 YES,解除整个app的ATS限制;但是通过NSExceptionDomains进行的配置依然有效
NSAllowsArbitraryLoadsInMedia //设置为 YES,解除通过AVFoundation框架访问媒体内容时的ATS 限制
NSAllowsArbitraryLoadsInWebContent //设置为 YES,解除通过webview发出的网络请求的ATS限制
NSAllowsLocalNetworking //设置为 YES,使得app可以载入任意本地资源,但不影响app的总体 ATS 策略
全部回答
- 1楼网友:傲气稳了全场
- 2021-02-06 08:35
思想的痼疾治得愈慢,行动的恶果现得愈快。
专制的淤泥积得愈多,文明的花朵开得愈少。
这样不知道行不行?自己想的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯