今天,当用户没有权限时,一位同事在删除操作中使用了 550 错误,乍一看这对我来说很糟糕,因为据我所知,这种错误对我来说看起来像是客户端(又名 4xx)错误而不是服务器(又名 5xx)。
当查看描述时,它完全表明它被正确使用。而不是 401 错误,我之前用它来解决一些“问题”。
401 错误的问题是:如果用户 A 已登录,并尝试执行返回 401 的操作,它可能会建议您必须“登录”,因为您没有有效的凭据来访问该 http 资源。这种方法的问题是,如果用户已登录,服务器知道他没有权限,在这种情况下,看起来像 550 更合适,但在我看来不太应该在这种情况下使用 550 错误设想。
问题是:
在基于 Web 的应用程序中,550 错误的正确用途是什么(如果有)。我了解它在 FTP 和 SMTP 中继中的用途。
如果某个登录用户发送了不允许的操作请求,应该返回哪个错误?
Thanks!
5xx 错误是服务器错误。如果用户没有权限,则应该是 4XX 错误。
不过你是对的。 401错误意味着用户必须登录才能访问。即需要身份验证。
您要查找的错误是403 禁忌
这对于是否因为用户已登录而没有任何歧义。其轮廓清晰。
来自 http 错误代码的 wiki (http://en.wikipedia.org/wiki/List_of_HTTP_status_codes)(强调我的):
403 禁忌
该请求是有效请求,但服务器拒绝响应
到它。[2]与 401 Unauthorized 响应不同,身份验证将使
没有区别。[2]在需要身份验证的服务器上,这
通常意味着所提供的凭据已成功
经过验证的但凭证仍然不授予客户端
访问资源的权限(例如,已识别的用户尝试
访问受限内容)。
同样,根据上面的 wiki,不存在 550 错误这样的事情。我想你可以选择自己实现它,但可能没有必要说实话。然而,根据标准的定义,这应该是服务器错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)