标签:
编写以下代码获取网络某个资源的MIMEType
1 -(void)getMIMEType 2 { 3 //路径 4 NSURL *url = [NSURL URLWithString:@"https://www.baidu.com/img/bd_logo1.png"]; 5 //请求对象 6 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 7 NSOperationQueue *queue = [[NSOperationQueue alloc]init]; 8 [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { 9 NSLog(@"%@",response.MIMEType); 10 }]; 11 }
运行提示如下错误:
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802),同时请求返回的结果为nil
因为苹果在iOS9引入隐私保护功能ATS(App Transport Security)屏蔽HTTP协议,在学习过程中遇到HTTP相关问题,因此写了这篇文章 iOS学习之旅7 ATS安全功能屏蔽HTTP协议 ,但今天又遇到ATS上的问题。
在iOS 9.0及以后版本和OS X10.11及以后版本编译的应用中,所有使用NSURLConnection、 CFURL、或 NSURLSession的连接都使用ATS默认行为。ATS不遵守以下要求的连接将会失败并断开。
以下是可接受的密码:
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
查了下资料,完全正向保密(perfect forward secrecy)要求一个密钥只能访问由它所保护的数据;不能使用保护数据传输的密钥派生其他密钥。此外,也不能使用保护数据传输的密钥的源派生其他密钥;一个密钥被破解, 并不影响其他密钥的安全性。确保密钥的长期保密材料不会影响来自以前通信的已交换密钥的保密性。
“TLS” 自然是指TLS协议。 “ECDHE” 是说使用带有短暂性密钥的椭圆曲线Diffie-Hellman密钥交换(也就是说要为每个会话创建新密钥并且事后也不会记下来)。“RSA”表明用 RSA 非对称加密保护TLS握手的安全。 “AES_128_CBC” 是说在密码块链接模式中用带有128位密钥的AES 非对称加密保护真正的数据交换。最后的 “SHA” 表明用 SHA 安全哈希算法。
iOS学习之旅10 ATS(App Transport Security)对HTTPS协议要求引起的问题
标签:
原文地址:http://www.cnblogs.com/Zev_Fung/p/5597261.html