未指定所需的 header 时使用什么 HTTP 状态代码?

What HTTP status code use when the required header is not specified?

如果用户向服务器发送请求并且 link 需要设置特定的自定义 headers 才能工作。在这种情况下,错误代码应为 400403422 ?

HTTP 规范要求任何客户端如果不理解最后两位数字的具体含义,则默认将响应视为 400。因此,您必须始终以某些客户端会将响应视为 400 的假设进行设计。

如果您能找到一个 4xx 状态代码,其特殊的额外处理更适合您的应用程序,请使用它。当客户端理解到足以进行额外处理时,与发送默认状态相比,您的情况会稍微好一些。

当前注册的状态代码似乎与您的服务器含义相符:

  • 403 Forbidden - 这是关于服务器拒绝请求,直到它以某种方式更改。最好在回复中说明原因 body.
  • 406 不可接受 - 这更具体地说是请求 header 中的值不正确。最常用于接受:header 值。
  • 412 Precondition Failed - 这是关于 header 的问题,涉及协商将发送哪个响应 body。最常用于 If-* header 值。

403 似乎是最准确的,因为服务器拒绝提供任何东西,除非发送自定义 headers。