我正在编写一些代码,以一种有用的方式响应网络应用程序中的过期登录。它是基于表单的登录。这是我要决定的 HTTP 状态代码。
我尝试了 401,但这会导致在浏览器中弹出身份验证对话框。我发现一些线程提到在某些 Microsoft 应用程序中使用的错误“440 登录已过期”,但我在 W3C 文档中找不到任何相关信息,也找不到任何其他似乎适合过期表单登录的代码。
那么用 440 响应是否可以 - 这是一种临时标准吗?或者是否有其他人使用的更好的代码?还是只是为应用程序补一个?
非常感谢!
最佳答案
这可能是一个与 Correct HTTP status code for login form? 密切相关的问题.无论您的登录名是否已过期,或者您是否从未拥有过,都没有什么区别。
其他问题的答案是:
但我缺少的是关于如何交付登录表单的真正区别。它可以是 * 作为对当前请求的响应注入(inject)(这就是 401 答案建议要做的) * 或通过重定向传送,例如302 到登录页面,一旦完成对话,该页面将重定向回原始请求。
10 年来,我一直使用 302 重定向到登录页面来运行我的应用程序。但我不再喜欢它了。我想返回 401,以便我的脚本代理、REST 等能够正确地执行它们的操作。
因此,要真正解决这个问题,需要做的是检查浏览器在收到带有没有摘要或基本质询的 WWW-Authentication header 的 401 响应时的行为。如果他们总是提出他们的对话,那么无论我们认为什么是正确和适当的做事方式,都是不行的。
我还需要发送带有 Location: header 的 401,看看浏览器是否会重定向。
https://stackoverflow.com/questions/6924156/