http - 最适合用于过期登录的 HTTP 状态(基于表单的登录)

我正在编写一些代码,以一种有用的方式响应网络应用程序中的过期登录。它是基于表单的登录。这是我要决定的 HTTP 状态代码。

我尝试了 401,但这会导致在浏览器中弹出身份验证对话框。我发现一些线程提到在某些 Microsoft 应用程序中使用的错误“440 登录已过期”,但我在 W3C 文档中找不到任何相关信息,也找不到任何其他似乎适合过期表单登录的代码。

那么用 440 响应是否可以 - 这是一种临时标准吗?或者是否有其他人使用的更好的代码?还是只是为应用程序补一个?

非常感谢!

最佳答案

这可能是一个与 Correct HTTP status code for login form? 密切相关的问题.无论您的登录名是否已过期,或者您是否从未拥有过,都没有什么区别。

其他问题的答案是:

  1. 400 - 已接受答案,但我强烈反对。
  2. 401 - 带有可能包含任何内容的 WWW-Authenticate header ,没关系,如果您不在此处放置基本或摘要身份验证质询,浏览器应该(!?)忽略它。

但我缺少的是关于如何交付登录表单的真正区别。它可以是 * 作为对当前请求的响应注入(inject)(这就是 401 答案建议要做的) * 或通过重定向传送,例如302 到登录页面,一旦完成对话,该页面将重定向回原始请求。

10 年来,我一直使用 302 重定向到登录页面来运行我的应用程序。但我不再喜欢它了。我想返回 401,以便我的脚本代理、REST 等能够正确地执行它们的操作。

因此,要真正解决这个问题,需要做的是检查浏览器在收到带有没有摘要或基本质询的 WWW-Authentication header 的 401 响应时的行为。如果他们总是提出他们的对话,那么无论我们认为什么是正确和适当的做事方式,都是不行的。

我还需要发送带有 Location: header 的 401,看看浏览器是否会重定向。

https://stackoverflow.com/questions/6924156/

相关文章:

php - 速率函数的问题

django - 在 Django 中动态设置默认表单值

php - php中DOMDocument的编码问题

visual-studio-2010 - 以编程方式发布 Web 应用程序

php - PEAR 邮件连接拒绝 smtp.gmail.com

objective-c - 如何在 Objective-C 中调试单例

iphone - 在 iOS 上捕获视频时查询最佳像素格式?

php - 在 ImageMagick 中量化图像时保留 alpha channel ?

visual-studio-2010 - 无法调试 T-SQL 或存储过程

algorithm - 关系型数据库是否可以利用一致性哈希的方式来做分区表?