iOS 10 beta NSURLSession 请求的 cookie 消失了

Posted

技术标签:

【中文标题】iOS 10 beta NSURLSession 请求的 cookie 消失了【英文标题】:iOS 10 beta NSURLSession request's cookie is gone 【发布时间】:2016-09-07 17:12:38 【问题描述】:

我有一个应用程序,它使用 NSURLSession 连接服务器以检索数据。在 ios 9 中,它运行良好。就在最近 iOS 即将发布,我升级了 Xcode 并使用了 iOS 10 Beta SDK ......结果 HTTP GET 请求不包含 Cookie 会话信息。这使得请求失败。我在这里搜索了 iOS 10 测试版关于 cookie 的问题,但运气不佳。想请教有过这种经历的人,有什么建议吗???提前谢谢你。

这是我创建 NSURLSession 的代码

         NSURLSessionConfiguration *urlSessionConfig = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:EP_FETCH];




        _fetchSession = [NSURLSession sessionWithConfiguration:urlSessionConfig
                                                               delegate:self    // we MUST have a delegate for background configurations
                                                          delegateQueue:nil];   // nil means "a random, non-main-queue queue"

更新:

已向 Apple 提交错误。同时,也发现如果我改变了

NSURLSessionConfiguration *urlSessionConfig = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:EP_FETCH];

NSURLSessionConfiguration *urlSessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];

然后cookie回到HTTP请求中。所以我想知道它是'NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier'这个api有一些问题。

【问题讨论】:

【参考方案1】:

如果这有可能不是您的代码中的错误,请提交错误。 今天应向 Apple 报告任何回归,因为 iSO 10 距离最终发布只有几天的时间。请提供:

重现问题的最小示例工具。 行为描述。 对以前操作系统上的行为的描述。

考虑将其标记为“安全”,因为这会影响设备对 Web 服务进行身份验证的能力。

至于诊断问题:

尝试将会话配置中的HTTPCookieStorage 属性显式设置为[NSHTTPCookieStorage sharedHTTPCookieStorage]。 在您发起请求之前,设置断点并确保 cookie 已被应用的其他部分存储。 尝试针对 iOS 9 SDK 进行编译并在 iOS 10 上运行它。这样可以区分与 SDK 相关的意外行为(链接时或后链接)与普通错误。 添加代码以尝试手动提取 cookie 并验证它确实存在。 确认不存在细微错误,例如将 cookie 标记为安全然后通过 HTTP 发送、cookie 域匹配问题、意外重定向等。

【讨论】:

以上是关于iOS 10 beta NSURLSession 请求的 cookie 消失了的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 中使用 NSUrlSession 一次下载 1 个文件

NSURLSession HTTP/2 内存泄漏

对 iOS 8 的 HTTP/2 支持

出于开发目的,如何使用 iOS 7 的 NSURLSession 及其委托方法系列接受自签名 SSL 证书?

iOS 7系列译文:忘记NSURLConnection,拥抱NSURLSession吧!

带有 NSURLSession 的 Swift 中的 HTTP 请求