处理禁止的REST请求403与404

时间:2015-09-26 08:23:46

标签: api rest http-headers

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

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

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

因此,建议在两种情况下都返回403,或者是"犯罪"?

1 个答案:

答案 0 :(得分:3)

我之前遇到过很多这样的情况,如果他们没有权限,我通常会选择404的另一条路线。我的理性存在没有你可以查看的ID 2386的文章,因此NotFound。我不仅仅喜欢这个,而且你没有权限查看那些不存在的东西"。

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

我希望这会有所帮助:)。