我的网站上有限制页面,例如 URL http://example.com/some-private-article.html,它显示了一个登录页面,您必须在其中输入您的凭据才能查看该页面。
信息并没有消失,它在那里,但访问它被拒绝。
我会给出一个 401 响应,但是没有 http auth / digest 而规范说它是必需的,登录过程是用 php 在服务器端处理的。
这种页面的正确 HTTP 状态代码是什么?
我的网站上有限制页面,例如 URL http://example.com/some-private-article.html,它显示了一个登录页面,您必须在其中输入您的凭据才能查看该页面。
信息并没有消失,它在那里,但访问它被拒绝。
我会给出一个 401 响应,但是没有 http auth / digest 而规范说它是必需的,登录过程是用 php 在服务器端处理的。
这种页面的正确 HTTP 状态代码是什么?
我会这样做:
根据HTTP 状态代码规范,如果用户还没有访问权限(未登录或没有所需的权限)并且必须通过表单登录到网页,我应该使用 403 或 404 作为自定义登录页面,外部客户端必须通过发送带有凭据的 POST 请求(通过 HTTPS 连接)登录,然后使用会话密钥存储 cookie,这将允许他们在重新加载页面后查看受限内容。
另一方面,如果我想通过 GET 类型请求使登录页面对脚本可用,或者对不一定有 cookie 的客户端可用,或者可以通过https://username 之类的 URL 登录: password@example.com/some-private-article.html然后我必须使用 HTTP 身份验证并且无法选择登录弹出窗口在浏览器中的外观,在这种情况下使用 401 HTTP 是合适的状态码。
我希望我做对了,如果没有,请纠正我。
您绝对应该查看此http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html,它定义了每个响应代码及其含义。
出于您的目的,尽管我可能会建议使用 401 - Unauthorized。
编辑:重新考虑,如果您正在执行表单样式身份验证,那么当您自己进行身份验证时,302 - Found 或 307 - 临时重定向到登录页面可能是一个明智的响应。