【问题标题】:Proper use of HTTP Error Codes. 550 - Why is it 5xx instead of 4xx?正确使用 HTTP 错误代码。 550 - 为什么是 5xx 而不是 4xx?
【发布时间】:2013-05-07 16:59:43
【问题描述】:

今天,当用户没有权限时,一位同事在删除操作上使用了 550 错误,这起初对我来说很糟糕,因为据我所知,这种错误看起来像客户端(又名 4xx)对我来说是错误而不是服务器(又名 5xx)。

查看描述时,它准确地表明它被正确使用。而不是 401 错误,我之前使用过一些“问题”。

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

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

    不过你是对的。 401 错误意味着用户必须登录才能访问。即需要身份验证。

    您要查找的错误是403 Forbidden

    这对于是否因为用户登录没有歧义。它的清晰。

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

    403 禁止

    请求是一个有效的请求,但服务器拒绝响应 [2]与 401 Unauthorized 响应不同,身份验证将使 没有区别。[2]在需要身份验证的服务器上,此 通常意味着提供的凭据已成功 经过身份验证的,但凭据仍然不授予客户端 访问资源的权限(例如,已识别的用户尝试 访问受限内容)。

    同样,根据上面的 wiki,没有 550 错误这样的东西。我想你可以选择自己实现它,但可能没有必要说实话。然而,它应该是标准中定义的服务器错误。

    【讨论】:

      猜你喜欢
      • 2023-01-23
      • 2011-10-02
      • 1970-01-01
      • 2011-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      相关资源
      最近更新 更多