【问题标题】:What is the most appropriate HTTP status code to return if a required header is missing?如果缺少必需的标头,返回的最合适的 HTTP 状态代码是什么?
【发布时间】:2012-05-21 13:23:08
【问题描述】:

我阅读了What HTTP status response code should I use if the request is missing a required parameter?,但它没有专门询问标题,似乎也没有达成共识。

此问题的上下文假定身份验证成功。我目前偏爱 400(尽管这感觉不对,因为这不是“格式错误的语法”)或 403。鉴于 403 的描述:

服务器理解请求,但拒绝执行。 授权将无济于事,并且不应重复请求。 如果 请求方法不是 HEAD 并且服务器希望公开 为什么请求没有被满足,它应该描述原因 对于实体的拒绝。

这对我来说最有意义。

有人可以请教我吗?谢谢。

【问题讨论】:

    标签: http-headers http-status-codes http-status-code-403 http-status-code-400


    【解决方案1】:

    400 错误请求

    这是请求中的用户错误。与 403 不同,客户端应该被允许重复他们的请求,但只能在修改之后:

    10.4.1 400 Bad Request 由于语法错误,服务器无法理解该请求。客户端不应该不加修改地重复请求。

    编辑

    正如 Mark Reed 在 cmets 中指出的那样,403 表示:“您发送给我的内容没有任何问题。您有适当的授权并且语法有效。我只是不想按照您的要求去做。”

    粗体部分简单地说,如果服务器选择,它可以准确地告诉客户端为什么它不想满足请求。

    【讨论】:

    • 肯定是 400。如果请求有任何不依赖于服务器状态的问题,那就是 400。如果唯一的问题是在服务器端(“这是一个完美的 cromulent 请求,因为据你所知,但我没心情”),那么你使用 403。
    • 感谢您的反馈,伙计们。
    • 412(前置条件失败)呢?
    • AFAIK HTTP 412 Precondition Failed 保留用于If-MatchIf-Unmodified-Since 标头。
    猜你喜欢
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 2018-02-03
    • 2021-10-23
    • 2021-04-07
    相关资源
    最近更新 更多