坏数据的HTTP状态代码

时间:2009-09-01 20:39:18

标签: http http-status-codes

当客户端发布错误数据时,我应返回什么HTTP状态代码(例如,当预期整数时为字符串)?

我一直在使用400 Bad Request,但是当我阅读似乎更适用于HTTP协议错误的HTTP文档时。

我想使用状态代码,以便Flash和AJAX客户端可以区分成功,错误数据和服务器错误,而无需解析响应。

3 个答案:

答案 0 :(得分:49)

这正是400的用途。是的,它用于错误的HTTP协议使用,但它并非专门用于此目的。

答案 1 :(得分:6)

当客户端点击提交按钮时,我真的更倾向于将错误数据反馈到浏览器中。

如果没有,那么我会返回400,因为标准说:

  

由于语法格式错误,服务器无法理解该请求。客户不应该在没有修改的情况下重复请求。

答案 2 :(得分:3)

如果语法错误,请使用“ 400错误请求”

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

如果数据不正确(语法正确),请使用“ 422无法处理的实体”

422(不可处理实体)状态代码表示服务器理解请求实体的内容类型(因此415(不支持的媒体类型)状态代码不合适),并且请求实体的语法正确(因此为400 (错误请求)状态代码不合适),但无法处理其中包含的说明。例如,如果XML请求正文包含格式正确(即,语法正确)但语义上错误的XML指令,则可能会发生此错误情况。

请参见https://www.bennadel.com/blog/2434-http-status-codes-for-invalid-data-400-vs-422.htm

另请参见https://softwareengineering.stackexchange.com/a/342896/158699答案,同时提供正确的400和422代码。