2

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

我会假设一个400错误的请求将是最好的。

4

2 回答 2

4

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

6.5.1. 400 错误请求

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

但是,根据您的要求,您还可以考虑422在 WebDAV 规范中定义的 (Unprocessable Entity) 状态代码,它只是 HTTP 协议的扩展:

11.2. 422 无法处理的实体

( 422Unprocessable Entity) 状态码意味着服务器理解请求实体的内容类型(因此 415(Unsupported Media Type) 状态码是不合适的),并且请求实体的语法是正确的(因此是400(Bad Request) 状态码不合适)但无法处理包含的说明。例如,如果 XML 请求正文包含格式正确(即语法正确)但语义错误的 XML 指令,则可能会出现这种错误情况。


请记住在响应负载中提供一个很好的描述来解释请求中缺少的内容。

于 2016-04-18T15:14:19.413 回答
0

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

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

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

当请求缺少身份验证凭据时,状态401 未授权。但是 401 还要求响应包含WWW-Authenticate 标头字段。根据这个问题,请求应该有一个 cookie 但没有,这不是身份验证的问题。

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

状态 422可能是合适的,但我认为,有点过于笼统,因为这意味着一切正常,但服务器无法处理请求

于 2018-01-24T11:14:19.980 回答