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

Node.js Axios请求遇ERR_FR_TOO_MANY_REDIRECTS错误及解决方法

解决Axios获取网站Cookie时重定向过多的问题

问题

尝试用Axios获取部分网站的最新Cookie时,遭遇ERR_FR_TOO_MANY_REDIRECTS错误,但Postman能正常请求返回结果,试了不少帖子里的方案都无效。

原代码如下:

const axios = require('axios');
const tough = require('tough-cookie');
const { AxiosCookieJarSupport } = require('axios-cookiejar-support');

async function getFreshCookies() {
  try {
    const cookieJar = new tough.CookieJar();
    const config = {
      headers: {},
      timeout: 30 * 1000,
      jar: cookieJar,
    };

    AxiosCookieJarSupport(axios);
    axios.defaults.jar = cookieJar;

    let url = 'https://example.com/';
    let response = await axios.get(url, config);
    let cookies = cookieJar.getCookiesSync(url);

    console.log('Successfully obtained fresh cookies.');
    return cookies;
  } catch (error) {
    console.log(error);
    return false;
  }
}

getFreshCookies();

运行时的错误信息:

cause: Error [ERR_FR_TOO_MANY_REDIRECTS]: Maximum number of redirects exceeded
      at RedirectableRequest._processResponse (C:\Users\NewSystem\OneDrive\Desktop\node.js learning\test\node_modules\follow-redirects\index.js:371:24)
      at RedirectableRequest._onNativeResponse (C:\Users\NewSystem\OneDrive\Desktop\node.js learning\test\node_modules\follow-redirects\index.js:62:10)
      at Object.onceWrapper (node:events:628:26)
      at ClientRequest.emit (node:events:513:28)
      at HTTPParser.parserOnIncomingClient [as onIncoming] (node:_http_client:701:27)
      at HTTPParser.parserOnHeadersComplete (node:_http_common:119:17)
      at TLSSocket.socketOnData (node:_http_client:542:22)
      at TLSSocket.emit (node:events:513:28)
      at addChunk (node:internal/streams/readable:324:12)
      at readableAddChunk (node:internal/streams/readable:297:9) {
    code: 'ERR_FR_TOO_MANY_REDIRECTS'
  }

解决方案

通过创建独立Axios实例并调整关键配置解决了问题,修改后的代码如下:

const axios = require('axios');
const http = require('http');
const https = require('https');
const tough = require('tough-cookie');

async function getFreshCookies() {
  try {
    const cookieJar = new tough.CookieJar();

    const instance = axios.create({
      httpAgent: new http.Agent({ keepAlive: true }),
      httpsAgent: new https.Agent({ keepAlive: true }),
      withCredentials: true, // 启用请求携带Cookie
      maxRedirects: 0, // 禁用自动重定向
      jar: cookieJar, // 关联Cookie Jar
    });

    const response = await instance.get('https://example.com', {
      maxRedirects: 0,
      validateStatus: null, // 禁用默认状态码校验
    });

    // 从响应头中获取Cookie
    const cookies = response.headers['set-cookie'];

    console.log('Cookies:', cookies);
    console.log('Response:', response.data);

    // 后续请求可使用获取到的Cookie
    return cookies;
  } catch (error) {
    console.log(error);
    return false;
  }
}

核心调整点:

  • 创建独立Axios实例,避免污染全局配置
  • 开启keepAlive保持连接复用
  • 设置maxRedirects: 0禁用自动重定向,规避循环重定向陷阱
  • 启用withCredentials确保Cookie正常传递
  • 关闭默认状态码校验,允许处理3xx重定向类状态码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:53:17