2014-01-21 84 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標頭...