2

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

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

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

这种页面的正确 HTTP 状态代码是什么?

4

3 回答 3

1

我会这样做:

  1. 将未经授权的用户重定向到登录页面(具有不同的url)。
  2. 在您的私人文章 url 上 200 OK 对于有权访问的授权用户。
  3. 对于无权访问的授权用户,则为 403。
于 2012-12-19T14:33:49.007 回答
0

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

另一方面,如果我想通过 GET 类型请求使登录页面对脚本可用,或者对不一定有 cookie 的客户端可用,或者可以通过https://username 之类的 URL 登录: password@example.com/some-private-article.html然后我必须使用 HTTP 身份验证并且无法选择登录弹出窗口在浏览器中的外观,在这种情况下使用 401 HTTP 是合适的状态码。

我希望我做对了,如果没有,请纠正我。

于 2013-09-07T18:51:33.257 回答
-1

您绝对应该查看此http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html,它定义了每个响应代码及其含义。

出于您的目的,尽管我可能会建议使用 401 - Unauthorized。


编辑:重新考虑,如果您正在执行表单样式身份验证,那么当您自己进行身份验证时,302 - Found 或 307 - 临时重定向到登录页面可能是一个明智的响应。

于 2012-12-19T14:17:39.953 回答