我已经阅读了很多错误代码,但我对错误代码404和410有点混淆。直到现在我才区分这些错误完全假装。
答案 0 :(得分:4)
404
表示资源不在给定位置,并且可能从未出现过(或者服务器不知道它是否已经存在)。
另一方面,410
表示资源不再存在 ,但过去曾经存在过。对于搜索引擎,蜘蛛等客户来说,这是一个有用的提示,因为他们可以从索引中删除此资源。
来自HTTP 1.1原始RFC 2616 section 10.4.11:
410响应主要用于协助网络任务 通过通知收件人资源是维护 故意不可用,服务器所有者希望如此 将删除该资源的远程链接。这样的事件很常见 限时,促销服务和属于的资源 个人不再在服务器的网站上工作。它不是 必须将所有永久不可用的资源标记为"已消失"要么 保持标记任何时间长度 - 留给 服务器所有者的自由裁量权。
另外,关于两者的区别:
预计这种情况[410] 被视为永久性具有链接编辑功能的客户端应该 用户批准后删除对Request-URI的引用。如果 服务器不知道,或无法确定,无论是否 条件是永久的,状态代码404(未找到)应该是 反而用了。
后来在RFC 7231 section 6.5.4中对其进行了改写,但含义保持不变:
404状态代码没有 表明这种缺乏代表性是暂时的还是暂时的 常驻;如果是,410(Gone)状态代码优先于404 原始服务器可能通过一些可配置的方式知道 这种情况可能是永久性的。