对于已知不存在的资源,最合适的HTTP响应代码是什么?

时间:2013-01-07 17:19:43

标签: http http-headers

当有人请求像http://www.example.com/page-that-never-existed-nor-will-ever-exist这样的页面时,我想知道是否有比404更好的选择(“永远”意味着在可预见的未来,但是出于所有意图和目的:永远不会)。

例如,根据他们在网站或网站上其他地方遇到的结构,我收到一些“聪明”爬虫认为可能存在的页面请求。它们不是拼写错误,而是要求我知道无处可去

我不想使用301 Moved Permanently,因为没有任何移动,也没有可移动的逻辑目的地。 我不想使用410 Gone,因为它从来就不存在。

我也想要比404 Not Found更合适的东西,因为我真的想传达“不存在”的信息:不仅仅是“未找到,发生了什么?谁知道?”。如何告诉用户代理我们再次要求它浪费我们的时间?

基于HTTP 1.1404 Not Found似乎是最正确的选项,因为定义以“或当没有其他响应适用”结束时,但我对此并不完全满意。还有其他想法吗?

1 个答案:

答案 0 :(得分:1)

你有没有考虑过403 Forbidden?这听起来像你可能正在寻找的东西,你可以在响应的主体中包含一条消息,告诉客户端资源永远不会存在。

  

服务器理解请求,但拒绝履行请求。   授权无效,请求不应重复。如果   请求方法不是HEAD,服务器希望公开   为什么请求没有得到满足,它应该描述原因   因为该实体的拒绝。如果服务器不想做   此信息可供客户使用,状态代码404(不是   找到了)可以代替使用。