我正在开发一个API,它也有一个身份验证/授权组件。
任何人,无论身份验证状态如何,都能写(POST),但取决于您是否未经身份验证,作为普通用户进行身份验证或作为管理员进行身份验证,以及您尝试访问的资源我将会为GET,DELETE和PUT返回不同的响应。
我正在尝试为未经过身份验证和/或授权的用户找出最合适的响应代码。
请记住http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html:
未经授权 - > 401
禁止 - > 403
不允许的方法 - > 405
让我们使用一个具体的例子:
(请记住,即使John和Amy被禁止或未经授权,并不意味着他们无法使用不同的HTTP VERB访问相同的资源。)
感谢。
答案 0 :(得分:21)
在这种情况下,我认为提供一些澄清的例子很有用:
401
405
2xx
405
403
405
换句话说,从程序角度来看:
405
401
403
2xx
编辑:我偶然发现了这个图表,并认为这可能对其他可能偶然发现这篇文章的人有用。点击放大。
答案 1 :(得分:12)
405 Method Not Allowed
只应在您不支持该方法时使用。它不应该被用来告诉客户他们不能使用这种方法。
因此,您案例中唯一优秀的HTTP代码是401 Unauthorized
。它指示客户端该方法存在并且需要登录才能访问它。