2014-01-21 86 views
0

我有一个在PhoneGap中开发的应用程序。我使用的REST API(Jive)使用HTTP基本身份验证来验证每个请求。标题如下:浏览器缓存AJAX标头

Authorization: Basic Base64(username:password) 

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

api.token = ""; 

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

我已经做了一切,但在我的应用程序和服务器之间插入代理来验证实际上是否正确设置了请求标头(例如,使用无效密码),包括在使用令牌之前记录它并使用Safari Web Inspector和Google Developer Tools进行检查。在每种情况下,都会正确报告令牌以包含我输入的密码,而不是原本应该删除的密码。

为了执行“记住我”功能,我将令牌保存在本地存储中。如果我杀死应用程序并使用Xcode重建(iOS版),然后尝试重新打开应用程序(保存了无效令牌),则会出现各种403错误,指出它使用的是我输入的具有无效密码的令牌。所以这个过程是这样的

  1. 登录使用有效的用户名
  2. 注销
  3. 输入有效的用户名与一个随机密码,如果密码是有效的
  4. 终止该应用
  5. 用户进行处理并用Xcode重建
  6. 打开应用程序。用户遇到403错误。

我也看到这发生在桌面版本的Safari和Chrome。

任何想法是怎么回事?

回答

0

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