HTTP 状态 400 验证与验证

2024-04-30

虽然RFC 7231 https://www.rfc-editor.org/rfc/rfc7231目的是为了清晰起见,但它显然给状态代码 400 带来了歧义。请注意这一点所以答案和评论 https://stackoverflow.com/a/3290198/284758。有人说 400 现在包括逻辑、应用或确认错误,另一个人说 400 仍然仅用于语法或验证 errors.

6.5.1. 400 错误请求
400(错误请求)状态码表示服务器无法或 由于被认为是的原因,将不会处理该请求 客户端错误(例如,格式错误的请求语法、无效的请求 消息帧或欺骗性请求路由).

我想得到关于这个问题更明确的答案。考虑 POST 或 PUT 尝试提供电子邮件地址的两种情况:

  • 请求中找到的电子邮件失败验证(例如,它包含“hello#gmail.com”)。400 回复已发送。
  • 请求中找到的电子邮件失败确认(例如,另一个用户已经在使用该地址)。A ???回复已发送。

我想遵循 RFC 7231。我对 6.5.1 的阅读告诉我验证错误应该收到 409(或 422)响应。但其他人不同意,并声称现在应该是 400。

有谁有更多信息可以解决这种歧义吗?


在这种情况下,发送 200 是一个很好的状态代码。毕竟,如果您没有输入有效的邮政编码,HTML 表单会返回 4xx 吗?

状态代码用于generic消费,而不是特定于应用程序的语义。当非特定接收者(例如代理、缓存、HTTP 库)进来时可以做一些有趣的事情时,它们非常有用。

因此,当由于客户端问题(例如错误的请求)而出现错误时,将使用 400HTTP句法)。它在 7231 中变得更加通用,因为 x00 状态代码是其系列中最通用的,并且在未定义更具体的状态代码时应将其视为后备。

您也可以使用 400 来表示验证错误,理论上它会稍微有帮助,因为 HTTP 库知道不要重复该请求 - 但如果它是 200,当然不值得太担心。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP 状态 400 验证与验证 的相关文章

随机推荐