return 专用 HTTP 响应的正确方法是什么?

What is the correct way to return a specialized HTTP response?

假设在我的 RESTful 界面中,我要求客户端包含一些特殊的 header,只是为了表明它是授权客户端。 (相信我;这是项目的要求。)如果 HTTP 请求在此 header 中包含不正确的值,服务器需要发回 HTTP 响应,客户端可以识别它发送了不受支持的值在 header.

使用 HTTP 发回此信息的合适方法是什么?

我想我更倾向于 400 Bad Request,带有特殊的 header 表示错误专业化。对此用例有任何想法或经验吗?

如果特殊 header 格式不正确,那么您可以发送 400 Bad request 表示 header 错误的响应。

但是,如果 header 的唯一目的是授权而您拒绝 header,因为值无效,那么我会选择:

  1. 403 - 禁止,如果您希望连接被拒绝
  2. 401 - 未经授权,如果客户端应尝试重新验证

在响应短语中,您可以指明拒绝连接的原因。