9

我已经阅读了很多错误代码,但我对错误代码 404 和 410 有点困惑。直到现在我还没有区分这些错误到底假装什么。

4

1 回答 1

9

表示该404资源不存在于给定位置,并且可能从未存在过(或者服务器不知道它是否存在过)。

410另一方面,表示资源不再存在,过去曾经存在。对于某些客户端(例如搜索引擎、蜘蛛等)来说,这是一个有用的提示,因为它们可以从索引中删除此资源。

从 HTTP 1.1 原始RFC 2616 部分 10.4.11

410 响应的主要目的是通过通知接收者资源故意不可用并且服务器所有者希望删除到该资源的远程链接来协助 Web 维护任务。这种事件对于限时促销服务和属于不再在服务器站点工作的个人的资源很常见。没有必要将所有永久不可用的资源标记为“已消失”或将标记保留任何时间 - 这由服务器所有者自行决定。

另外,关于两者的区别:

这种情况 [410] 预计将被视为永久性的。具有链接编辑能力的客户端应该在用户批准后删除对 Request-URI 的引用。如果服务器不知道或无法确定条件是否是永久的,则应该使用状态代码 404(未找到)。

后来在RFC 7231 第 6.5.4 节中对其进行了改写,但含义保持不变:

404 状态码并不表示这种缺乏代表性是暂时的还是永久性的;如果源服务器知道(大概是通过一些可配置的方式)该条件可能是永久性的,则 410(Gone)状态代码优于 404。

于 2015-03-05T11:29:05.103 回答