处理禁止的 REST 请求 403 与 404

Buz*_*zut 6 api rest http-headers

从语义上讲,API 应返回适应情况的错误消息。例如,如果用户向 发出请求GET /article/2386,它应该返回(用户需要授权才能请求该 API 来处理权限管理):

  • 文章数据如果存在并且用户有权限,
  • 404 Not Found 如果它不存在,则会显示错误消息,
  • 如果用户没有权限,则 403 禁止并显示错误消息。

现在我想知道在这两种情况下返回 403 Forbidden 是否更明智,因为邪恶的用户可能会尝试随机扫描资源并了解它们是否存在(如果存在则为 403,如果不存在则为 404)。

那么在这两种情况下都返回 403 是可取的还是“犯罪”?

JCa*_*der 7

我以前遇到过很多这样的情况,如果他们没有权限,我通常会选择 404ing 的另一条路线。我的理性是没有 ID 2386 的文章可以查看,因此 NotFound。我更喜欢“您无权查看不存在的内容”。

至于“是不是犯罪”,我会说不。我远非 RESTefarian,但我认为 REST 是使您的 api 对消费者更直观的指南。如果安全意味着你需要稍微改变一下,那就这样吧。另外,这真的让它变得不那么直观吗?

我希望这有帮助 :)。

  • 感谢你的回答。我还发现这篇[有用的文章](http://www.bennadel.com/blog/2400-handling-forbidden-restful-requests-401-vs-403-vs-404.htm)关于这个主题有很多不同的内容评论中的观点 (3认同)