App A需App B重认证时应返回何种HTTP状态码?
该场景下的HTTP状态码选择建议
优先采用标准认证类4xx状态码
- 若原请求的认证凭据无效、过期或需要重新验证,最符合行业惯例的是返回
401 Unauthorized。同时可以在响应头中添加WWW-Authenticate字段,指定自定义的认证方案及重认证相关提示(比如WWW-Authenticate: CustomAuth realm="AppA", action="reauth")。App B只需监听401状态码,即可自动触发重认证流程。 - 注意
403 Forbidden更适用于“凭据有效但权限不足”的场景,不适合用来触发重认证。
- 若原请求的认证凭据无效、过期或需要重新验证,最符合行业惯例的是返回
不推荐使用200系列成功码携带指令
200-299状态码的核心语义是“请求已成功处理完成”,但此时App A并未完成原请求的处理,而是要求客户端执行额外操作。使用200会违背HTTP状态码的语义约定,不仅不符合RESTful API设计规范,还可能导致通用HTTP客户端无法正确识别该特殊场景。
如果你的重认证是自定义流程,401 + WWW-Authenticate的组合是标准且清晰的实现方式,能让客户端明确理解服务端的要求。
内容的提问来源于stack exchange,提问作者ccroth
相关产品推荐
相关产品推荐

