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



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

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

那么用440来响应可以吗?这是一种特殊的标准吗?或者是否有其他人使用的更好的代码?或者只是为应用程序编一个?

多谢!

这可能是一个与正确登录表单的HTTP状态码相近的问题。无论您的登录是否已经过期,或者您是否从未使用过,都没有什么区别。

另一个问题的答案如下:

  1. 400 -被接受的答案,我强烈反对。
  2. 401 -带有一个WWW-Authenticate头,它可以包含任何内容,没关系,如果你没有在这里放置一个基本的或摘要的认证挑战,浏览器应该(!?)忽略它。

但是我遗漏的是如何交付登录表单的真正区别。两者都可以*作为对当前请求的响应注入(这就是401答案建议做的事情)*或与重定向一起传递,例如302到登录页面,该页面一旦完成对话,将重定向回原始请求。

我有10年运行我的应用程序302重定向到登录页面。但是我不再喜欢它了。我想返回401,这样我的脚本代理,REST等将正确地完成它们的工作。

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

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

最新更新