跳到主要内容
开发工具2026-08-28Begin4 分钟阅读

接口测试怎么带 Token、过 CORS 报错怎么办?

现象:请求发不出去或拿不到数据

你在 API 测试工具里填好 URL 和参数,点发送,结果要么浏览器控制台一片红(CORS),要么返回 401/403/405。下面按"从易到难"的顺序排查。

一、带 Token:Authorization 头怎么加

绝大多数需要登录的接口靠请求头里的 Token 鉴权。在 ToolVault 工具匣 的 API 测试工具 里:

  1. 切到"请求头(Headers)"区域;
  2. 添加一行 Key = Authorization,Value = Bearer <你的token>(注意 Bearer 后面有空格);
  3. 如果是 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 字段(秒级时间戳)就能确认。三个实践要点:

  1. 区分 401 的两种含义:token expired 和 invalid signature 都会返回 401,前者重新登录拿新 Token 即可,后者说明 Token 被改过或密钥不对,要警惕;
  2. 刷新机制:规范做法是 Access Token 短(15 分钟~2 小时)+ Refresh Token 长,401 后先用 Refresh Token 换新的再重试原请求;
  3. 本地调试技巧:把可疑 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 测试工具:

  1. 填 URL,先用 GET 试连通;
  2. 加 Header(鉴权)和 Body(JSON),切换方法;
  3. 看"响应状态码"和"响应头",对照上表;
  4. 需要把请求转成代码复现,用 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 方法速查。访问 首页 查看更多开发者工具。

实现注记

实现同源代理回显时有个细节:浏览器 fetch 会隐藏部分响应头(Set-Cookie 等),要原样回显服务端响应头给用户,代理必须显式转发白名单头并标注被浏览器策略吃掉的部分——「看到服务端裸响应」这件事在浏览器里比想象中多一层工程。