当请求缺少必需的cookie时,适当的HTTP状态代码是什么?

时间:2016-04-18 14:37:13

标签: http http-status-codes http-status

我有一个API端点,请求应该有一个cookie(不是身份验证)。如果不存在,将返回正确的HTTP状态代码是什么?

我认为400错误请求是最好的。

2 个答案:

答案 0 :(得分:3)

您的问题中没有提供太多详细信息,但我猜400(错误请求)是一个不错的选择:

  

6.5.1. 400 Bad Request

     

400(错误请求)状态代码表示服务器不能或   由于被认为是某种东西,它不会处理请求   客户端错误(例如,格式错误的请求语法,无效请求   消息框架或欺骗性请求路由)。

但是,根据您的要求,您还可以考虑WebDAV规范中定义的422(不可处理实体)状态代码,该代码只是HTTP协议的扩展:

  

11.2. 422 Unprocessable Entity

     

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

请记住在响应有效负载中提供一个很好的描述,说明请求中缺少的内容。

答案 1 :(得分:0)

我会考虑这种情况的403 forbidden状态代码 - 其他一切都很好,但请求缺少cookie。要从链接引用中复制其详细信息:

  

服务器理解该请求但拒绝授权。

     

如果请求中提供了身份验证凭据,则服务器认为它们不足以授予访问权限

状态401 unauthorized适用于请求缺少身份验证凭据的情况。但401还要求响应包含 WWW-Authenticate标头字段。根据这个问题,请求应该有一个cookie,但不是,而且不是认证问题。

Status 400是客户端请求错误的时候,这对于OP描述的场景可能有点误导。

Status 422可能是合适的,但我认为,有点过于通用,因为它意味着一切都行,但服务器无法处理请求