2009-07-21 31 views
0

我使用XMLHttpRequest和基本認證來訪問應用程序界面。密碼是暫時的,由其他請求產生,所以在一段時間後過期。XMLHttpRequest的,基本的身份驗證和到期密碼

但瀏覽器(Firefox至少)繼續使用舊的,失敗,顯示登錄彈出。如果我通過返回403來禁止使用X-Requested-By和錯誤密碼的請求彈出,mozilla永遠不會嘗試使用新密碼(螢火蟲在請求中顯示新密碼,服務器收到舊密碼)。

問題可以通過添加隨機「鹽」以用戶名(和在服務器側剝皮吧)迴避,但有更好的辦法來迫使XMLHttpRequest的使用提供的密碼,而不是緩存?

回答

0

401響應包括一個「認證域」,其默認爲在服務器上的所有的URL(見RFC 2617)。預計瀏覽器將爲來自同一域的任何挑戰提供相同的憑據。

既然你已經產生了到期的密碼,爲什麼不乾脆把它變成一個必須附加到每個請求令牌?例如,用戶名的SHA1哈希值,可能與時間戳淹沒在一起。我假設你將用它作爲服務器上的一個鍵來檢索用戶的數據。

+0

沒有你的意思是401升的反應? – ymv 2009-07-21 15:11:42