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

JS请求CloudFront后端服务器时自定义X-Forwarded-For头的疑问

关于CloudFront保留自定义X-Forwarded-For的问题

首先直接给结论:你没法通过“在CloudFront之前/之后设置X-Forwarded-For”来让它不被修改,因为CloudFront作为反向代理,默认会处理这个头。

具体原因

CloudFront的默认行为是:如果请求中已经包含X-Forwarded-For头,它会把自己接收到的客户端IP(也就是你的请求经过的最后一层代理IP,或者你的本地IP,如果没走代理)添加到这个头的最前面。比如你设置X-Forwarded-For: 1.1.1.1,经过CloudFront后,这个头会变成X-Forwarded-For: [CloudFront看到的客户端IP], 1.1.1.1——你的自定义IP不会被替换,但会被挤到后面,没法作为唯一的客户端IP被后端识别。

解决办法

如果想让后端拿到你指定的IP,有两种更靠谱的方式:

  • 改用自定义请求头:比如设置X-Client-IP: 1.1.1.1代替X-Forwarded-For,然后在CloudFront的「Origin Request Policy」里配置允许转发这个自定义头到源服务器。CloudFront不会修改自定义头,后端直接读取X-Client-IP就能拿到你设置的IP。
  • 调整CloudFront配置(不推荐,有安全风险):如果你一定要用X-Forwarded-For,可以在CloudFront的Origin Request Policy里,设置不添加CloudFront的客户端IP到X-Forwarded-For。但这么做会让CloudFront完全保留你发送的X-Forwarded-For内容,不过这意味着任何请求都能伪造这个头,后端无法信任这个IP的真实性,只适合内部可信的请求场景。

修正你的代码错误

你代码里的X-Forwarded-For字段有语法错误,同时补充了异步请求的正确处理方式:

const axios = require('axios');
const https = require('https');
const randomUseragent = require('random-useragent');
const proxy = 'your proxy';

function generateRandomHeaders(ip) {
  return {
    'user-agent': randomUseragent.getRandom(),
    "Accept": "*/*",
    "Cache-Control": "no-cache",
    "Connection": "keep-alive",
    "content-type": "application/json",
    "Authority": "p2p.binance.com",
    "Origin": "https://p2p.binance.com",
    "Pragma": "no-cache",
    // 修正语法错误,单IP直接写值,多IP用逗号分隔
    "X-Forwarded-For": ip
    // 如果改用自定义头,替换成这行
    // "X-Client-IP": ip
  };
}

const agent = new https.Agent({
  proxy: proxy
});

// 处理axios异步请求的正确方式
const sendRequest = async (url, data, ip) => {
  try {
    const response = await axios.post(url, data, {
      headers: generateRandomHeaders(ip),
      httpsAgent: agent
    });
    console.log(response.data);
    return response;
  } catch (error) {
    console.error('请求失败:', error);
    throw error;
  }
};

内容的提问来源于stack exchange,提问作者Даннил Камышников

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 18:57:50