HTTP 状态码
HTTP 状态码是服务器在响应的状态行里返回的三位数字,用来告诉客户端这次请求被处理的结果,由 RFC 9110 等规范定义。它通常与一段可读的原因短语一起出现,例如 200 OK、404 Not Found、500 Internal Server Error。浏览器、爬虫、接口调用方主要依据状态码来决定下一步:跳转、重试、报错还是使用缓存。
状态码按首位数字分为五类:
1xx信息性响应,请求已收到、处理继续;2xx成功,如200、201 Created、204 No Content;3xx重定向,如301(永久)、302(临时)、304 Not Modified;4xx客户端错误,如400、401、403、404;5xx服务端错误,如500、502、503。
常见误区是把状态码当成业务结果。状态码只反映 HTTP 层面的成败,接口完全可能返回 200 却在响应体里带着业务错误码,需要结合返回内容判断。此外要分清含义相近的码,例如 401(未认证)与 403(已认证但无权限)、301(会被缓存)与 302(不缓存),用错会影响客户端行为,重定向类还会影响 SEO。
常见问题
301 和 302 有什么区别?
301 是永久重定向,浏览器和搜索引擎会缓存新地址,之后直接访问新 URL;302 是临时重定向,不缓存,每次仍先请求原地址。做域名迁移用 301,临时活动页跳转用 302。
401 和 403 有什么区别?
401 表示身份未认证,需要登录或提供有效凭证;403 表示身份已知但没有权限访问该资源,换个凭证通常也没用,除非提升权限。
返回 200 就代表业务成功了吗?
不一定。200 只表示 HTTP 请求被正常处理,接口可能在响应体里返回业务错误(如 code 字段非 0),必须结合响应内容再判断成败。
相关工具
相关名词
User-Agent · MIME 类型 · URL