我应该返回什么样的响应状态代码?

时间:2017-12-08 22:48:25

标签: rest http-status-code-404 http-status-codes stateless

我有一个简单的购物清单应用程序,用户可以在其中创建购物清单,查看购物清单甚至共享购物清单。我的问题是,用户没有创建购物清单,可以说cout<<(1 << n)<<endl;但它已由另一个用户创建,因此它在数据库中,我应该将哪些状态代码返回给未创建的用户这个购物清单?它应该是x,因为它在数据库中,但是该用户无权查看它,或者它应该是403,因为它在此用户购物清单集合中不存在。

2 个答案:

答案 0 :(得分:1)

您应该返回404:用户不应该知道另一个具有不同用户所拥有的ID的购物车。

返回403被视为安全流程,因为恶意黑客可以使用连续的用户ID开始使用API​​,直到找到拥有该购物车的用户为止。

答案 1 :(得分:1)

虽然接受的答案非常好,但另一种方法是为每个ID发送403,即使它不存在。这样也没有安全漏洞。我假设通过身份验证识别用户并知道/ lists / 200是他们的,因此可能存在最多200个ID。如果/ lists / 50和/ lists / 50000000都返回403,则用户不是更聪明的。

面对像缓存代理这样的中介,这种行为可能更安全,缓存代理可以公开缓存404,但不能缓存403响应。