尽管RFC 7231的目的是使其更加清晰,但它显然给状态代码400带来了模糊性。注意这个所以回答和评论。一个人说400现在包含逻辑、应用程序或验证错误,另一个人说400仍然只用于语法或验证错误。
6.5.1.400个错误请求 400 (坏请求)状态代码表示,由于被认为是客户端错误(,格式错误的请求语法、无效的请求消息帧或欺骗性请求路由),服务器不能或不会处理该请求。
我想得到一个更明确的答案。考虑两种情况:一篇文章或一篇文章试图提供一个电子邮件地址:
我想跟着RFC 7231。我对6.5.1的阅读告诉我,验证错误应该收到一个409 (或422)响应。但其他人不同意,并声称现在应该是400。
有没有人有更多的信息可以解决这种模糊性?
发布于 2015-07-10 01:07:13
在这种情况下发送200是一个很好的状态代码。毕竟,当您没有输入有效的邮政编码时,HTML表单会得到一个4xx吗?
状态代码是用于泛型消费的,而不是特定于应用程序的语义.当非特定的接收者--例如,代理、缓存、HTTP库--能够在进来时做一些有趣的事情时,它们是有用的。
因此,当出现来自客户端问题的错误(如糟糕的请求HTTP语法)时,将使用400。它在7231中变得更通用,因为x00状态代码是它们系列中最通用的,并且在没有定义更具体的状态代码时应该被认为是回退。
您也可以使用400进行验证错误,从理论上讲,这会稍微有所帮助,因为HTTP库知道不会重复该请求--但是如果它是200,肯定不值得太担心。
https://stackoverflow.com/questions/31323100
复制相似问题