2009-07-21 32 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