现象:请求发不出去或拿不到数据
你在 API 测试工具里填好 URL 和参数,点发送,结果要么浏览器控制台一片红(CORS),要么返回 401/403/405。下面按"从易到难"的顺序排查。
一、带 Token:Authorization 头怎么加
绝大多数需要登录的接口靠请求头里的 Token 鉴权。在 ToolVault 工具匣 的 API 测试工具 里:
- 切到"请求头(Headers)"区域;
- 添加一行
Key = Authorization,Value = Bearer <你的token>(注意 Bearer 后面有空格); - 如果是 API Key 模式,常见写法是
Key = X-API-Key,Value = <key>。
注意:很多 401 不是 Token 错,而是漏了
Bearer前缀或多了换行。先用工具把头原样发出去,再对比后端预期。
二、CORS 报错:到底是谁的问题
CORS(跨域资源共享)是浏览器的安全策略,和服务端返回的数据无关。报错长这样:
Access to fetch at 'https://api.xxx.com' from origin 'https://wcytcn.com'
has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header
| 现象 | 含义 | 你能做的 |
|---|---|---|
| 浏览器报 CORS,但 Postman 能通 | 服务端没对你的来源开白名单 | 让后端加 Access-Control-Allow-Origin;或用服务端代理 |
| 预检(OPTIONS)被 405/403 | 服务端没处理 OPTIONS 预检 | 后端放行 OPTIONS 方法 |
| 带自定义头仍被拦 | 需要在 Access-Control-Allow-Headers 声明 | 后端补充允许的头 |
关键点:前端工具无法"绕过"CORS,这是协议层限制。真正的解决一定在后端配置或加一层同源代理。
三、其他高频坑
| 错误 | 常见原因 | 排查 |
|---|---|---|
| 405 Method Not Allowed | 接口不支持你用的 GET/POST | 核对接口文档的方法,工具里切换 |
| 一直超时 / 无响应 | 地址错、端口未开、HTTPS 混用 | 先用 curl 验证连通性 |
| 400 Bad Request | 请求体格式错(如 JSON 少了引号) | 用 JSON 格式化 校验 body |
| 返回 HTML 而非 JSON | 撞到了网关/登录页 | 看响应内容,通常是没进到真实接口 |
四、Token"昨天还能用今天 401":过期与刷新
用 JWT 的接口 401 还有一种时间性原因:Token 过期。解码 Payload 看 exp 字段(秒级时间戳)就能确认。三个实践要点:
- 区分 401 的两种含义:
token expired和invalid signature都会返回 401,前者重新登录拿新 Token 即可,后者说明 Token 被改过或密钥不对,要警惕; - 刷新机制:规范做法是 Access Token 短(15 分钟~2 小时)+ Refresh Token 长,401 后先用 Refresh Token 换新的再重试原请求;
- 本地调试技巧:把可疑 Token 丢进 JWT 解码工具,
exp与当前时间一目了然,不用猜。
五、CORS 预检(OPTIONS)的细节
带 Authorization 头或 Content-Type: application/json 的请求都是非简单请求,浏览器会先发一个 OPTIONS 预检,这一步经常在日志里"凭空多出"莫名其妙的 OPTIONS 请求。预检要过,服务端必须:
- 放行 OPTIONS 方法本身(很多框架默认不放行,于是 405);
- 返回
Access-Control-Allow-Origin、Access-Control-Allow-Headers(要包含Authorization)、Access-Control-Allow-Methods; Access-Control-Allow-Origin不允许为*的同时携带 Cookie(credentials: include)——这是另一类高频报错,响应头要精确回显来源。
调试时用 API 测试工具 手动发一个 OPTIONS 请求看响应头,比在控制台里猜快得多。
怎么用工具逐步定位
打开 API 测试工具:
- 填 URL,先用 GET 试连通;
- 加 Header(鉴权)和 Body(JSON),切换方法;
- 看"响应状态码"和"响应头",对照上表;
- 需要把请求转成代码复现,用 curl 转代码工具 一键生成。
状态码含义可随时查 HTTP 状态码速查。
FAQ
为什么 Postman 能通,浏览器里就 CORS?
Postman 不执行浏览器的同源策略,相当于"直接发"。浏览器会替你做 CORS 校验,所以差异来自浏览器而非接口本身。
工具能帮我绕过 CORS 吗?
不能也不该。CORS 是为保护用户而设。正确做法是让后端配置白名单,或把请求发到你自己的后端做代理转发。
401 和 403 有什么区别?
401 是"没带凭证 / 凭证无效"(未认证);403 是"凭证有效,但没权限"(已认证但被拒绝)。先解决 401(Token 对了)再看 403。
响应 200 但拿不到数据?
先看响应体的结构——很多后端把业务错误包在 HTTP 200 里(如 {"code": 1001, "msg": "token invalid"}),HTTP 层全绿、业务层早已失败。排查接口问题时永远先读响应体,再谈状态码。
本文由 ToolVault 工具匣 提供。相关工具:HTTP 状态码、curl 转代码、HTTP 方法速查。访问 首页 查看更多开发者工具。