浏览器缓存AJAX标头

时间:2014-01-21 23:50:54

标签: ajax caching cordova http-headers

我在PhoneGap中开发了一个应用程序。我正在使用的REST API(Jive)使用HTTP基本身份验证来验证每个请求。标题如下:

Authorization: Basic Base64(username:password)

其中Base64()表示将参数转换为base 64编码。我以这种方式执行请求没有问题。一旦用户成功登录,由200 OK消息指示,我保存编码的令牌并将其用于所有后续请求。要实现注销,我将存储的令牌设置为空字符串:

api.token = "";

然后显示登录页面。但是,此时,无论您输入什么密码,API都会返回200 OK响应,就好像请求来自最初登录的用户一样。

我已经完成了所有操作,但在我的应用程序和服务器之间插入代理,以验证实际上正确的请求标头是否已设置(例如,使用无效密码),包括在使用之前记录令牌并且使用Safari Web Inspector和Google Developer Tools进行检查。在每个实例中,令牌被正确报告为包含我输入的密码,而不是原本应该被删除的密码。

为了执行“记住我”功能,我将令牌保存在本地存储中。如果我杀死应用程序并使用Xcode重建它(对于iOS)然后尝试重新打开应用程序(保存了无效令牌),我会收到各种403错误,表明它使用我输入的令牌和无效密码。所以这个过程就像这样

  1. 使用有效的用户名
  2. 登录
  3. 退出
  4. 输入带有随机密码的有效用户名
  5. 用户被视为密码有效
  6. 杀死应用并使用Xcode重建
  7. 打开应用。用户会收到403错误。
  8. 我也看到过这种情况发生在Safari和Chrome的桌面版本中。

    知道发生了什么事吗?

1 个答案:

答案 0 :(得分:0)

原来并不是浏览器缓存标题(开头真的没什么意义)。 Jive正在发送安全cookie并使用它并完全忽略Authorization标题......