(iOS错误?)NSURLRequest缓存的授权传递的凭据不正确
我想知道(iOS错误?)NSURLRequest缓存的授权传递的凭据不正确,ios,nsurlrequest,offline-caching,nsurlrequestcachepolicy,Ios,Nsurlrequest,Offline Caching,Nsurlrequestcachepolicy,我想知道NSURLRequest与.returnCacheDataElseLoad/的缓存策略忽略了基本授权。因此,以下场景无法正常工作: 设置URL缓存策略以在向服务器请求之前使用本地缓存 使用良好的凭据提出新请求并收到成功响应 切换到脱机 使用以前的URL发出请求,但授权凭据不正确 观察第二个凭证不正确的请求是否成功 总的来说,如果应用程序中的脱机模式是通过iOS系统缓存实现的,则此错误允许任何人登录 有人熟悉这个问题吗?这至少在iOS 10上发生。我正在寻找如何以温和的方式修复它。这是
NSURLRequest
与.returnCacheDataElseLoad
/的缓存策略忽略了基本授权。因此,以下场景无法正常工作:
- 设置URL缓存策略以在向服务器请求之前使用本地缓存
- 使用良好的凭据提出新请求并收到成功响应
- 切换到脱机
- 使用以前的URL发出请求,但授权凭据不正确
- 观察第二个凭证不正确的请求是否成功
总的来说,如果应用程序中的脱机模式是通过iOS系统缓存实现的,则此错误允许任何人登录
有人熟悉这个问题吗?这至少在iOS 10上发生。我正在寻找如何以温和的方式修复它。这是预期的行为。NSURLCache缓存仅基于URL本身,而不基于请求的任何其他方面。标题、柱体等未考虑在内,IIRC。(我可能忘记了一些不能忽略的部分,但无论如何,凭证都是。)
如果你想让你的应用程序支持多个用户帐户,在服务器端数据中有不同的视图,你需要为每个用户使用一个单独的缓存,并且你需要检查客户端的身份验证凭据。(顺便说一句,这本身可能是一个错误,因为这意味着客户机和服务器可能会在当前密码的概念上失去同步。)