【发布时间】:2016-03-29 05:00:40
【问题描述】:
我正在开发一个登录到 HTTPS 网站的应用程序。身份验证后,网站会发送一个标记为“安全”的最终 cookie。
当我将defaultSessionConfiguration() 用于NSURLSession() 时,该应用程序可以正常工作。
当我将应用程序中的一行更改为使用 backgroundSessionConfigurationWithIdentifier() 时,我无法继续通过身份验证阶段。我确实得到一个网页,显示我已通过身份验证,但后续请求返回登录页面。
共享cookie存储中似乎不存在“身份验证成功cookie”。
此 cookie 是网站标记为“安全”的唯一 cookie。请注意,此 HTTPS 网站通过 HTTPS 进行所有交易。
TL;DR NSURLSession 后台会话与默认会话丢失安全 cookie 有何不同?
编辑:我还做了一些工作。
当NSURLSession 重定向 使用backgroundSessionConfiguration 时,它似乎忽略了在重定向标头中发送的cookie? (我认为“安全”的 cookie 可能并不重要。)
指定defaultSessionConfiguration 时,重定向可以正常工作。
【问题讨论】:
-
默认会话配置使用基于磁盘的持久缓存(结果下载到文件时除外)并将凭据存储在用户的钥匙串中。
-
对不起。我应该提到这是一个 iOS 应用程序。因此,cookie 仅存储在应用程序的 sharedStorage 中。
标签: ios nsurlsession nsurlrequest