0

为了尽量保持 REST 方法的纯洁性,我决定将应用程序作为API - 直到最后一点。

不幸的是,我遇到了一个绊脚石。在用 PHP 编写 Digest 身份验证处理程序后,我发现自己无法让 Web 浏览器中的用户体验像基于表单的身份验证方法那样友好。

这样做的原因是,即使我可以通过 Javascript 模拟 Digest 身份验证响应,使用 HTML 表单中的用户名和密码(nonce由于它们的生成方式,我可以安全地将值提供给脚本),失败时,浏览器仍然显示标准的、丑陋的身份验证提示。

有没有办法解决?较早的问题引用mozBackgroundRequest,但这似乎很难跨浏览器。

谢谢!

4

1 回答 1

0

您可以先使用 AJAX 发出请求,以确保提供的身份验证详细信息有效。

如果他们这样做,就做你一直在做的事情。如果他们不这样做,请以您自己的更好的方式告诉用户...

编辑

如果您控制 PHP 中的 auth 例程(并且如果 auth 失败,大概是在做header('HTTP/1.1 401 Unauthorized');等),您可以……不做。相反,以正常的 200 OK 响应,但在正文中放置一个您可以在其中查找的字符串ajax.responseText(例如“authFailed”或其他内容)。

您可以只向正常浏览器请求中不存在的 AJAX 请求添加标头(或 cookie 或其他内容),以便区分 AJAX 身份验证检查和正常的经过身份验证的会话。

目前,确切的机制在我的脑海中有点模糊(这是漫长的一天),但我确信可以使用这种方法完成。

于 2011-08-18T10:19:21.743 回答