如果有人请求访问他不允许看到的实体,应该返回什么状态代码?你可能会说它是403:禁止。但通常的做法是返回404吗?我不希望有人知道如果他不被允许看到它,这个实体甚至会存在。你觉得怎么样?
答案 0 :(得分:21)
使用404未找到。
当服务器时,404状态代码也可用于403场景 不想发回拒绝服务的原因 请求。 一个很好的例子是当服务器感知某种类型的时候 攻击,可能是暴力攻击。在这种情况下, 服务器响应404找不到而不是403 Forbidden和an 解释
答案 1 :(得分:0)
返回403 Forbidden
。如果您为每个请求返回此信息,则不允许客户端访问,如果您从不返回404 Not Found
,则客户端一无所知。
这一切都取决于这对你有多重要:
我不希望有人知道如果他不被允许看到它,这个实体就会存在。
如果这非常重要,请务必返回403 Forbidden
。
答案 2 :(得分:0)
嗯..这取决于......
如果你的终点' URL显示敏感信息(例如,在Dropbox API中,您通过名称而不是ID来引用文件 - 因此URL包含文件名)或者您可能正在使用顺序ID(例如,可以使用升序ID)蛮力),返回404。
如果您需要支持"请求访问"您没有权限的资源功能,返回403,因此您的客户端可以分辨出来。
一般来说,如果您的API使用ID并且从不将信息显示为其网址的一部分,并且您使用UUID作为ID,那么我会使用403 ..就像现在许多知名且非常安全的应用程序一样(谷歌,微软等。)。
答案 3 :(得分:-4)
希望您根据我在下面发布的内容得到一些关于HTTP错误的说明:
HTTP 401错误:: 当网站访问者尝试访问受限制的网页但未获得授权时,会发生此错误。
HTTP 403错误:: 此错误类似于401错误,但请注意未授权和禁止之间的区别。例如,如果您尝试访问任何网站上的目录(禁止),就会发生这种情况。
HTTP 404错误:: 当您尝试访问不存在的Web服务器(通常是网页)上的资源时,会发生404错误。