web-applications - 正确使用HTTP错误代码。 550-为什么是5xx而不是4xx?

标签 web-applications http-status-codes http-error

今天,一位同事在用户没有权限的情况下在删除操作中使用了550错误,这乍一看对我来说是糟糕的,因为据我所知,这种错误对我而言似乎像是一个客户端(也称为4xx)错误而不是服务器(又名5xx)。

查看说明时,它暗示正确使用了它。而不是我以前使用过的“问题”所引起的401错误。

401错误的问题是:如果用户A登录,并尝试执行返回401的操作,则它可能建议您必须“登录”,因为您没有访问该http资源的有效凭据。这种方法的问题在于,如果用户已登录,则服务器会知道他没有该权限,在这种情况下,它看起来像是550,这更合适,但在我看来,在此情况下不应使用550错误设想。

问题是:
在基于Web的应用程序中,550错误的正确用法是什么(如果有的话)。我了解它在FTP和SMTP中继使用中使用。
如果某些登录用户发送了不允许的操作请求,应该返回哪个错误?

谢谢!

最佳答案

5xx错误是SERVER错误。如果用户没有权限,则应该是4XX错误。

但是你是正确的。 401错误表示用户必须登录才能访问。即要求进行身份验证。

您要查找的错误是 403禁止使用

这对于是否由于用户登录而没有歧义。清晰明了。

从Wiki上的http错误代码(http://en.wikipedia.org/wiki/List_of_HTTP_status_codes)(强调我的):

403 Forbidden

The request was a valid request, but the server is refusing to respond to it.[2] Unlike a 401 Unauthorized response, authenticating will make no difference.[2] On servers where authentication is required, this commonly means that the provided credentials were successfully authenticated but that the credentials still do not grant the client permission to access the resource (e.g. a recognized user attempting to access restricted content).



同样,根据上述Wiki,没有550错误之类的东西。我想您可以选择自己实现它,但是可能不需要诚实。但是,这应该是标准中定义的服务器错误。

关于web-applications - 正确使用HTTP错误代码。 550-为什么是5xx而不是4xx?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16525799/

相关文章:

java - 跟踪 Java Web 应用程序中的并发文件处理

iphone - 判断 WebApp 是否通过 iPhone 主屏幕上的 URL 或链接启动

android - DownloadManager - 了解 ERROR_HTTP_DATA_ERROR

Angular - 如何在服务中模拟 HttpError 响应

产品聚合器的数据库设计

java - 如何在Oracle中回滚/超时 “select for update”锁?

php - 如何让 Apache 在 PHP 错误的情况下发送 500?

rest - 空列表的 HTTP 200 或 404?

rest - 业务异常导致错误响应的http状态。语法正确,请求有意义

java - 方法不允许,状态 = 405 尝试创建删除实体按钮