iOS10 NSURLSession HTTP/2 无效
Posted
技术标签:
【中文标题】iOS10 NSURLSession HTTP/2 无效【英文标题】:iOS10 NSURLSession HTTP/2 Invalid 【发布时间】:2016-09-19 07:55:02 【问题描述】:NSURLSession 请求 HTTP/2.0
在 ios9 中工作。
但在iOS10无效
我的代码:
NSURLSession *session = [NSURLSession sharedSession];
request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://ga.seeyouyima.com/page"]];
[request setHTTPMethod:@"POST"];
[[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
if (completedBlock)
completedBlock(data, response, error);
] resume];
【问题讨论】:
您的代码是必需的。 可能是证书配置有问题。我有类似的issue。 服务器证书使用TLSv1.2。 【参考方案1】:Charles Proxy 4 似乎会导致 iOS 10 不使用 HTTP/2。它似乎在 iOS 9 上运行良好。
您可以通过在 iOS 10 的 Mobile Safari 中加载 Akamai HTTP/2 演示来演示这一点:
https://http2.akamai.com/demo
如果您在访问该站点时启用 Charles Proxy,它将向您报告您的浏览器不支持 HTTP/2。
【讨论】:
这是正确的答案。 Charles Proxy 4 让 iOS 10 不再使用 HTTP/2。如果您需要使用 Charles Proxy 4 嗅探 HTTP/2 请求,请使用 iOS 9。 另外,对于那些想知道的人,iOS 9 模拟器确实可以解决这个问题。 我对使用 HTTP 2 的 Charles 和 NSURLSession 有相同的行为,但这很奇怪。为什么 Charles 在成功代理其他 HTTP 2 请求(例如 curl)时会使 HTTP 2 失败以上是关于iOS10 NSURLSession HTTP/2 无效的主要内容,如果未能解决你的问题,请参考以下文章
带有 NSURLSession 的 Http/2 server_push
iOS 10 beta NSURLSession 请求的 cookie 消失了
在 iOS 中使用 NSUrlSession 一次下载 1 个文件