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

cURL请求正常但axios.get返回403的问题排查求助

解决Axios请求返回403但curl可正常获取数据的问题

这种情况大概率是目标服务器对请求头做了校验,Axios默认的请求头不符合服务器要求,而curl的默认请求头通过了校验。可以按以下步骤排查解决:

  • 对比请求头差异
    执行curl -v https://maps.amtrak.com/services/MapDataService/trains/getTrainsData,查看输出中> 开头的请求头内容,重点关注User-Agent、Accept这两个字段。Axios默认的User-Agent是axios/[版本号],和curl的默认值不同,很多服务器会通过这个字段拦截非标准工具的请求。

  • 修改Axios请求头匹配curl
    在Axios的请求配置中添加和curl一致的关键请求头,修改后的代码如下:

    const axios = require("axios");
    const dataUrl = "https://maps.amtrak.com/services/MapDataService/trains/getTrainsData";
    console.log("getting");
    axios.get(dataUrl, {
      headers: {
        'User-Agent': 'curl/7.81.0', // 替换成你curl实际输出的User-Agent值
        'Accept': '*/*'
      }
    })
    .then(response => console.log(response.data))
    .catch(err => console.log(err.response?.status, err.response?.data || err.message));
    
  • 其他排查方向
    如果添加上述头后仍报错,可以检查是否需要设置Referer字段(部分服务器会校验请求来源),或者是否存在Cookie校验(但此案例中直接用curl请求无需Cookie,所以概率较低)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 11:01:01