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

Node.js环境下Axios POST请求指定API返回403其他工具正常如何排查

Axios发送x-www-form-urlencoded格式POST请求返回403的解决方法

问题原因

403错误是Node.js环境下Axios构造的请求和curl构造的请求存在差异,触发了目标站点的反爬校验导致的,按以下步骤排查修复即可:

排查步骤

  • 先对比两者的完整请求头差异:
    1. 给curl命令添加-v参数,执行后打印出完整的请求头、请求体内容
    2. 给Axios添加请求拦截器,打印实际发出的请求配置,对比两者的差异,把curl里存在但Axios里缺失的头补全
// 添加请求拦截器打印请求详情
axios.interceptors.request.use(config => {
  console.log('请求头:', config.headers)
  console.log('请求体:', config.data)
  return config
})

常见修复方案

1. 补充缺失的校验头

目标站点通常会校验Referer、Accept、Accept-Language等请求头,可在Axios的headers配置中补全,示例:

headers: { 
  'User-Agent':'Mozilla/5.0 (X11; Linux x86_64)', 
  'Content-Type': 'application/x-www-form-urlencoded',
  'Accept': '*/*',
  'Referer': 'https://www3.animeflv.net/',
  'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8'
}

2. 改用标准的URLSearchParams构造表单数据

直接传字符串容易出现编码问题,改用URLSearchParams构造表单数据,Axios会自动处理编码和Content-Type头:

const axios = require('axios');

(async () => {
  try {
    // 构造表单数据
    const data = new URLSearchParams();
    data.append('value', 'tokyo');

    let res = await axios({
      method: 'post',
      baseURL: 'https://www3.animeflv.net',
      url: '/api/animes/search',
      data: data,
      headers: { 
        'User-Agent':'Mozilla/5.0 (X11; Linux x86_64)',
        'Referer': 'https://www3.animeflv.net/'
      }
    })
    
    console.log(`statusCode: ${res.status}`);
    console.log(res.data.data);
  } catch (error) {
    console.error('错误状态码:', error.response?.status);
    console.error('错误响应内容:', error.response?.data);
  }
})();

3. 移除Axios默认添加的多余请求头

Axios默认会自动添加X-Requested-With: XMLHttpRequest头,部分站点会拦截该头,可在headers中手动设置X-Requested-With: ''移除该头。

快速验证方法

你可以直接将可运行的curl命令转换为Axios代码,直接使用转换后的代码即可正常请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:15:03