Bar*_*xto 7 web-applications http-status-codes http-error
今天,当用户没有权限时,合作者在删除操作上使用了550错误,因为我知道这个错而不是服务器(又名5xx).
在查看说明时,它确切地表明它已被正确使用.而不是401错误,我之前使用的一些'问题'.
401错误的问题是:如果用户A已登录,并尝试执行返回401的操作,则可以建议您必须"登录",因为您没有有效凭据来访问该http资源.这种方法的问题在于,如果用户被记录,服务器知道他没有权限,在这种情况下,看起来像550更合适,但在我看来不应该使用550错误场景.
问题是:在基于Web的应用程序中,550错误的正确用法(如果有)是什么.我理解它在FTP和SMTP中继使用中的用途.如果某些用户登录,则发送不允许的操作请求,应返回哪个错误?
谢谢!
Tho*_*son 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错误这样的事情.我想你可以选择自己实现它,但可能没有必要诚实.但它应该是标准中定义的服务器错误.