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 个文件
出于开发目的,如何使用 iOS 7 的 NSURLSession 及其委托方法系列接受自签名 SSL 证书?