You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么两段调用远程API的Axios JavaScript代码块行为不一致?

问题根因:axios不同调用方式的传参规则差异

核心是axios.get()别名方法和通用axios()调用的参数解析规则不同,导致认证信息没有被正确放到请求头中:

  • axios.get(url[, config])的第二个参数要求传入完整的配置对象,你直接把headers对象作为第二个参数传入时,axios不会把它识别为配置下的headers字段,而是会把整个headers对象直接当作config处理。相当于你传入的配置是{ ...你的headers对象 },而不是预期的{ headers: 你的headers对象 },最终请求头里没有携带认证信息,自然返回401状态码。
  • 通用axios(config)调用要求传入完整配置对象,你把请求方法、url、headers都放到配置的对应字段下,axios可以正常解析到headers里的认证信息,请求符合接口要求就返回200状态码。

两种写法的对比示例:

// 错误的axios.get写法(返回401)
const headers = { Authorization: 'Bearer 你的token' }
axios.get('https://api.example.com/xxx', headers)
// 实际发出的请求头没有Authorization字段
// 正确的axios.get写法
const headers = { Authorization: 'Bearer 你的token' }
axios.get('https://api.example.com/xxx', { headers: headers })
// 第二个参数传入完整配置对象,headers放在配置的headers字段下
// 正常的通用axios调用写法(返回200)
const options = {
  method: 'get',
  url: 'https://api.example.com/xxx',
  headers: { Authorization: 'Bearer 你的token' }
}
axios(options)
// 所有参数都在对应字段下,解析正常

本质上是axios方法重载的参数匹配规则导致的问题,别名方法(get/post/put/delete等)的传参顺序和通用调用的传参结构不同,直接传headers会导致参数解析错位,请求头缺失必要的认证信息。

内容的提问来源于stack exchange,提问作者Mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 00:12:02