我有一个API端点,请求应该有一个cookie(不是身份验证)。如果不存在,将返回正确的HTTP状态代码是什么?
我认为400
错误请求是最好的。
答案 0 :(得分:3)
您的问题中没有提供太多详细信息,但我猜400
(错误请求)是一个不错的选择:
400
(错误请求)状态代码表示服务器不能或 由于被认为是某种东西,它不会处理请求 客户端错误(例如,格式错误的请求语法,无效请求 消息框架或欺骗性请求路由)。
但是,根据您的要求,您还可以考虑WebDAV规范中定义的422
(不可处理实体)状态代码,该代码只是HTTP协议的扩展:
11.2. 422 Unprocessable Entity
422
(不可处理的实体)状态代码表示服务器 了解请求实体的内容类型(因此a415
(不支持的媒体类型)状态代码不合适),以及 请求实体的语法是正确的(因此400
(错误请求) 状态代码不合适但是无法处理包含的内容 说明。例如,如果是XML,则可能会出现此错误情况 请求正文包含格式正确(即语法正确),但是 语义错误的XML指令。
请记住在响应有效负载中提供一个很好的描述,说明请求中缺少的内容。
答案 1 :(得分:0)
我会考虑这种情况的403 forbidden状态代码 - 其他一切都很好,但请求缺少cookie。要从链接引用中复制其详细信息:
服务器理解该请求但拒绝授权。
如果请求中提供了身份验证凭据,则服务器认为它们不足以授予访问权限
状态401 unauthorized适用于请求缺少身份验证凭据的情况。但401还要求响应包含 WWW-Authenticate标头字段。根据这个问题,请求应该有一个cookie,但不是,而且不是认证问题。
Status 400是客户端请求错误的时候,这对于OP描述的场景可能有点误导。
Status 422可能是合适的,但我认为,有点过于通用,因为它意味着一切都行,但服务器无法处理请求。