CodeSOD:我不是 200 笔记

CodeSOD:我不是 200

HTTP 状态码为了便于使用,有理论上的分类:1xx 表示信息性,2xx 表示成功,3xx 表示重定向,4xx 表示客户端错误,5xx 表示服务器错误。然而,实际应用常常偏离这些标准。例如,LinkedIn 使用非标准的 999 状态码表示未经授权的访问。Shopify 推出了自己的自定义代码,而 Apache 甚至还有一个 218 代码。WebDAV 通过添加新的状态码和 HTTP 请求动词,使得情况更加复杂。一段生成的代码试图通过检查状态码除以 100 是否不等于 2 来处理 HTTP 状态码。这种方法将 200 范围之外的任何状态码都视为错误。作者批评这种方法,特别是除以 100 的操作,认为它错误地将非错误响应(如 3xx)标记为失败。例如,304(未修改)状态码表明缓存内容仍然有效,但会被错误地识别为错误。这种巧妙但有缺陷的逻辑导致了不必要的请求失败,表明了对数学技巧的偏好胜过了健壮的错误处理。