【问题标题】:In background NSURLSession why are secure cookies lost?在后台 NSURLSession 为什么安全 cookie 会丢失?
【发布时间】: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


【解决方案1】:

事实证明这是一个已知的错误。苹果河16,852,027。

已知 backgroundSession 会在重定向时忽略新的 cookie。解决方案是使用 defaultSession 获取 cookie,然后继续使用 backgroundSession。

Apple Developer Forum post

【讨论】:

    猜你喜欢
    • 2019-10-27
    • 2017-03-14
    • 2013-03-25
    • 1970-01-01
    • 2019-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    相关资源
    最近更新 更多