我在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错误,表明它使用我输入的令牌和无效密码。所以这个过程就像这样
我也看到过这种情况发生在Safari和Chrome的桌面版本中。
知道发生了什么事吗?
答案 0 :(得分:0)
原来并不是浏览器缓存标题(开头真的没什么意义)。 Jive正在发送安全cookie并使用它并完全忽略Authorization
标题......