今天,当用户没有权限时,合作者在删除操作上使用了550错误,这个权限最初看起来很糟糕,因为据我所知,这种错误看起来像客户端(又名4xx)错误给我而不是服务器(又名5xx)。
在查看说明时,它确切地表明它已正确使用。而不是401错误,我之前使用过一些“问题”。
401错误的问题是:如果用户A已登录,并尝试执行返回401的操作,则可以建议您必须“登录”,因为您没有有效凭据来访问该http资源。这种方法的问题在于,如果用户被记录,服务器知道他没有权限,在这种情况下,看起来像550更合适,但在我看来不应该使用550错误场景。
问题是: 在基于Web的应用程序中,550错误的正确用法(如果有的话)是什么。我理解它在FTP和SMTP中继使用中的用途。 如果某些用户登录,发送不允许的操作请求,应该返回哪个错误?
谢谢!
答案 0 :(得分:11)
5xx错误是SERVER错误。如果用户没有权限,则应该是4XX错误。
但是你是对的。 401错误意味着用户必须登录才能访问。即需要认证。
您正在寻找的错误是 403 Forbidden
这是否因为用户是否登录而没有歧义。它清晰明了。
来自wiki上的http错误代码(http://en.wikipedia.org/wiki/List_of_HTTP_status_codes)(强调我的):
403禁止
请求是有效请求,但服务器拒绝响应 它。[2]与401 Unauthorized响应不同,将进行身份验证 没有区别。[2]在需要身份验证的服务器上,这个 通常意味着提供的凭据已成功完成 已验证,但凭据仍未授予客户端 访问资源的权限(例如,识别的用户尝试 访问受限制的内容。)
同样,根据上面的wiki,没有550错误这样的事情。我想你可以选择自己实现它,但可能没有必要诚实。但它应该是标准中定义的服务器错误。