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

Vue.js调用后端支付接口提示‘No token Provided’的问题解决咨询

问题分析与解决方案

我一眼就发现问题所在了——你在使用axios发送POST请求时,请求头(headers)的位置放错了,导致后端根本接收不到你传递的token,所以才会返回"No token Provided"的错误。

核心错误点

axios.post的正确语法是:

axios.post(url, requestBody, config)

你现在把headers对象直接放在了第二个参数(请求体)里,而不是第三个参数的配置项中,这就相当于你把请求头的内容当成了要发送给后端的表单数据,后端自然无法从req.headers里拿到token。

另外还有个容易忽略的小细节:Authorization字段的Bearer和token之间必须加空格,这是OAuth2认证的标准格式,否则后端解析token时也可能出问题。

修正后的代码

methods: { 
  sendTokenToServer(charge, response) { 
    const token = localStorage.getItem("token");
    // 先判断token是否存在,避免空值发送
    if (!token) {
      console.error("Token不存在,请先登录");
      return;
    }
    axios.post(
      `http://localhost:5000/api/pay`,
      // 第二个参数:请求体(这里是你要发送的业务数据)
      { totalPrice: this.getCartTotalPriceWithShipping },
      // 第三个参数:配置项,包含请求头
      {
        headers: { 
          Authorization: `Bearer ${token}`, // 注意Bearer后面的空格
          "x-access-token": token 
        }
      }
    ) 
    .then(res => { 
      console.log(res); 
    })
    .catch(err => {
      console.error("请求失败:", err);
    }); 
  } 
}; 

额外调试建议

修改后,你可以在浏览器开发者工具的「Network」标签中,找到发送的pay请求,查看「Request Headers」部分,确认Authorization和x-access-token这两个字段是否已经正确出现在请求头里。如果能看到,后端就能正常获取到token了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 16:42:45