自定义登录页面的正确http状态代码是什么?

时间:2012-12-19 14:14:23

标签: http login http-status-codes

我的网站上有限制页面,例如网址为http://example.com/some-private-article.html,它会显示一个登录页面,您必须输入凭据才能看到该页面。

信息没有消失,它就在那里,但拒绝访问它。

我会给出401响应,但是没有http auth / digest,而规范说它是必需的,登录程序是用php处理服务器端的。

此类网页的正确HTTP状态代码是什么?

3 个答案:

答案 0 :(得分:1)

我会这样做:

  1. 将未经授权的用户重定向到登录页面(不同网址)。
  2. 在您的私人文章网址200上,有权访问的授权用户。
  3. 对于无权访问的授权用户而言为403。

答案 1 :(得分:0)

根据HTTP status code spec我应该使用403或404作为自定义登录页面,如果用户尚未访问,(未登录或没有所需权限)并且必须登录到通过表单的网页,外部客户端将必须通过发送带有凭据的POST请求(通过HTTPS连接)登录,然后使用会话密钥存储cookie,这将允许他们在重新加载页面后查看受限制的内容。

另一方面,如果我想通过GET类型请求为脚本提供登录页面,或者对于不一定有cookie的客户端,或者可以通过{{3}这样的URL登录然后我必须使用HTTP身份验证,并且无法选择登录弹出窗口在浏览器中的样子,在这种情况下,使用401 HTTP状态代码是合适的。

我希望我能做到这一点,如果没有,那么请纠正我。

答案 2 :(得分:-1)

你一定要查看这个http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html,它定义了每个响应代码及其含义。

为了您的目的,我可能会建议401 - 未经授权。


编辑:如果您正在进行表单样式身份验证,那么无论是302-Found还是307-临时重定向到登录页面都可能是一个合理的响应,因为您自己正在进行身份验证。