ios - (iOS 错误?)NSURLRequest 缓存的授权通过不正确的凭据

标签 ios nsurlrequest offline-caching nsurlrequestcachepolicy

我想知道 NSURLRequest.returnCacheDataElseLoad/.returnCacheDataDontLoad缓存策略忽略基本授权。所以下面的场景不能正常工作:

  • 设置 URL 缓存策略以在向服务器发出请求之前使用本地缓存
  • 使用良好凭据提出新请求并收到成功响应
  • 转离线
  • 使用以前的 URL 发出请求,但授权凭据不正确
  • 观察使用不正确凭据的第二个请求是否成功

  • 总的来说,如果应用程序中的离线模式是通过 iOS 系统缓存实现的,则此错误允许任何人登录。

    有人熟悉这个问题吗?它至少发生在 iOS 10 上。我正在寻找如何以温和的方式修复它。

    最佳答案

    这是预期的行为。 NSURLCache 缓存仅基于 URL 本身,而不是基于请求的任何其他方面。 IIRC,不考虑标题、POST 正文等。 (我可能会忘记一些未被忽略的部分,但无论哪种方式,凭据都是。)

    如果您想让您的应用程序支持多个用户帐户对服务器端数据具有不同的 View ,您需要为每个用户使用单独的缓存,并且您需要以某种方式检查客户端的身份验证凭据。 (顺便说一句,这本身可能是一个错误,因为这意味着客户端和服务器在当前密码的概念方面可能会不同步。)

    关于ios - (iOS 错误?)NSURLRequest 缓存的授权通过不正确的凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42923758/

    相关文章:

    ios - 如何让 Xcode 在 header 中显示编译错误?

    ios - Xcode 8 GM 种子 Storyboard布局问题

    ios - 编码 iOS 基本身份验证

    HTML 形式的 iOS NSURLRequest

    jquery - 来自 jQuery Mobile 的离线/在线数据库身份验证/同步

    javascript - 用python下载网站供离线浏览

    ios - 如何像在 CNN 应用程序中那样在 UITableView 上扩展图像

    ios - 指定用户数据的有效方法

    objective-c - ASIHTTPRequest 和 NSURLRequest 不同的结果

    html - 如何为 GWT 排列动态提供 list