【问题标题】:Is message-body required when sending error response status code 4xx-5xx?发送错误响应状态码 4xx-5xx 时是否需要消息体?
【发布时间】:2013-06-01 08:10:03
【问题描述】:

在响应 GET 或 POST Ajax 请求时发送 4xx-5xx 的响应状态代码时,是否需要消息体?

我只是在学习 Ajax。对于常规请求,我会发送一个漂亮的 HTML 页面供用户查看。但在 Ajax 请求的情况下,无论如何都会被忽略。

【问题讨论】:

    标签: ajax http http-status-codes


    【解决方案1】:

    RFC 2616 声明:

    4xx 类状态码适用于客户端 似乎犯了错误。除了响应 HEAD 请求时, 服务器应该包含一个包含错误解释的实体 情况,以及它是暂时的还是永久的。

    以数字“5”开头的响应状态码表示在 服务器知道它有错误或无法做到的 执行请求。除了响应 HEAD 请求时, 服务器应该包含一个包含错误解释的实体 情况,以及它是暂时的还是永久的。

    这不是必须的,所以如果你想表现得很好,你可以这样做,但这不是必需的。但请记住,有时 200(或 204)响应甚至比 4xx 或 5xx(即使在您自己的 ajax 中)更合适。这可以帮助您区分服务器端的错误和您有意发送到客户端的错误代码。

    为了完整起见,引用RFC 2119

    1. 应该这个词,或形容词“推荐”,表示在特定情况下可能存在忽略a的正当理由
      特定项目,但必须了解全部含义并
      在选择不同的课程之前仔细权衡。

    【讨论】:

    • 我确实计划对“已知”错误使用 200 状态代码,以便我可以使用数据对象。但是在某些情况下,我的脚本会输出标准错误。如果 Ajax 失败,我的计划是输出 errorThrown 而不是尝试解析 jqXHR 以获取信息。我还计划在失败回调中检查状态代码 200,并在这种情况下输出通用失败消息。
    • 2xx 表示请求已被接受,这不是您的情况。如果您为此使用它们,那么您正在创建自己的专有协议,该协议实际上是隧道 HTTP。您还将失去 HTTP 功能。例如可缓存性,因为您破坏了统一接口。
    • @filip26 它适用于 POST,因为响应是“描述操作的结果”。 GET 在 200 上返回错误对象意味着错误对象与请求相关联,这也是一种有效的情况(甚至可能是可缓存的)。
    • @Lyth 你错了,这不合适。 RFC 中没有这样的声明。你只是发明它....
    猜你喜欢
    • 1970-01-01
    • 2012-10-02
    • 2011-10-02
    • 2014-07-25
    • 2011-05-21
    • 1970-01-01
    • 2011-07-17
    • 2023-01-23
    • 1970-01-01
    相关资源
    最近更新 更多