HTTP 状态码 是服务器对每个请求的标准化回执,用三位数字 + 一个英文短语表达”这次请求处理成果如何”。MIME 类型(媒体类型,Media Type)是描述消息体里”装的是什么”的标识,由 IANA 维护注册表,从 text/html 到 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,决定浏览器是渲染、下载还是报错。两者都是 HTTP 协议里最高频出现的概念,本工具用一个页面把它们摆齐,免去在 MDN/IANA/Wiki 里来回切换。
| 类别 | 范围 | 含义 |
|---|---|---|
| 1xx | 100–103 | 信息:请求已收到,过程未结束 |
| 2xx | 200–226 | 成功:请求已被理解并处理 |
| 3xx | 300–308 | 重定向:需要进一步动作(通常是跳转) |
| 4xx | 400–451 | 客户端错误:请求本身有问题 |
| 5xx | 500–511 | 服务端错误:服务器没能完成有效请求 |
记一个口诀:1 信 2 成 3 转 4 求 5 服——客户端”求”得有问题是 4xx,服务端”服”务出问题是 5xx。
类别(type)/ 子类(subtype)/ 可选参数:标准结构是 type/subtype; param=value。最常见的可选参数是 charset:
Content-Type: text/html; charset=utf-8
Content-Type: application/json
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary...
JSON 不需要 charset 参数——RFC 8259 规定 JSON 必须是 UTF-8。HTML/CSS/JS 等文本类格式如果不写 charset,浏览器可能用页面默认编码或猜,乱码风险高。
容易写错的几个:
image/jpg ❌ → image/jpeg ✅(注意是 jpeg 不是 jpg)application/x-zip-compressed ❌ → application/zip ✅(IANA 标准是后者)text/javascript ✅(已是标准),application/javascript 已废弃但仍被识别audio/mp3 不是标准 → 用 audio/mpeg简单一张表:
| Content-Type | 浏览器行为 |
|---|---|
text/html | 渲染为页面 |
text/plain / text/css / text/javascript | 内联展示或按需引用 |
image/* audio/* video/* | 内联预览(如果浏览器支持该编码) |
application/pdf | 多数浏览器内置 PDF 阅读器预览 |
application/json application/xml | 直接以文本形式展示,部分浏览器自动美化 |
application/octet-stream | 强制下载(不预览) |
如果服务端配错 MIME(比如把 .svg 配成 text/plain),浏览器会按文本展示而不是渲染矢量图。部署前用 curl -I 资源URL 看一眼响应头是排查的第一步。
永久跳转用 301 / 308,临时跳转用 302 / 307。区别在"是否保留请求方法":301/302 的语义含糊,浏览器/代理可能把 POST 改写成 GET;307/308 严格保留原方法。新代码建议:永久 → 308,临时 → 307;老站迁移历史包袱重的,301 仍是默认选择,SEO 权重传递最稳。
404 = 不存在或暂时找不到,410 = 已永久删除且不再回来。语义上 410 更明确,搜索引擎收到 410 会更快从索引里移除该 URL。常规请用 404,只有确定永久下线(比如运营活动结束、商品永久下架)再用 410。
401 = 你还没证明自己是谁(缺 Token、Token 过期、签名错误),响应应带 WWW-Authenticate 头提示怎么认证。403 = 知道你是谁了,但你没权限(角色不够、IP 黑名单、地区限制)。一句话:"401 是登录问题,403 是授权问题。"
99% 是请求 Content-Type 与接口期望不一致。最常见:接口要 application/json 但客户端发了 application/x-www-form-urlencoded(默认 fetch / form 提交都是后者);或者上传接口要 multipart/form-data 但客户端只贴了一段 base64。检查请求头 Content-Type 和接口文档对齐即可。
application/octet-stream 和具体 MIME 哪个好?只要能给出准确 MIME,就一定不要用 octet-stream。 浏览器对 octet-stream 的默认行为是直接下载,会让本来该内联预览的 PDF / 图片 / 视频强制弹出"另存为"。仅当文件类型确实未知(用户上传的任意二进制)才退回兜底类型。
text/javascript 还是 application/javascript?IETF 在 2022 年的 RFC 9239 里明确把 text/javascript 定为标准,废弃了 application/javascript。两者浏览器都识别,但新代码统一用 text/javascript。.mjs 也是同一个 MIME。