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

React生产构建环境无法获取API数据,开发环境正常

问题解决指南

1. 修复后端CORS配置的核心错误

你当前的corsOptions.origin写法逻辑错误——'http://localhost:3000' || 'http://192.168.0.212:3000/'在JavaScript中只会返回第一个真值,也就是永远仅允许localhost:3000的请求,生产环境的前端域名完全不在允许列表内,这是导致CORS拦截的直接原因。

方案一:指定多个允许的来源

直接将所有需要放行的域名放入数组:

const corsOptions = {
  origin: ['http://localhost:3000', 'http://192.168.0.212:3000', '你的生产环境前端域名'],
  credentials: true,
  optionSuccessStatus: 200
};

方案二:动态校验来源(适配多环境)

如果需要更灵活的环境适配,用函数判断请求来源是否合法:

const allowedOrigins = ['http://localhost:3000', 'http://192.168.0.212:3000', '你的生产环境前端域名'];

const corsOptions = {
  origin: (origin: string | undefined, callback: (err: Error | null, allow?: boolean) => void) => {
    // 允许Postman这类无来源的请求
    if (!origin || allowedOrigins.includes(origin)) {
      callback(null, true);
    } else {
      callback(new Error('Not allowed by CORS'));
    }
  },
  credentials: true,
  optionSuccessStatus: 200
};

2. 修正前端Axios的baseURL配置

生产环境下仍使用localhost:5000作为API地址完全无效,必须替换为后端API的生产地址,建议用环境变量自动切换:

import axios from "axios";

const instance = axios.create({
  baseURL: process.env.NODE_ENV === 'production' 
    ? 'https://你的生产API域名.com' 
    : 'http://localhost:5000/'
});

export default instance;

确保前端项目配置好对应环境变量,生产构建时自动替换为正确的API地址。

3. 排查浏览器插件拦截问题

net::ERR_BLOCKED_BY_CLIENT也可能是浏览器插件(如AdBlock、隐私保护类插件)拦截请求导致,可尝试:

  • 禁用所有浏览器插件后重新测试
  • 用隐私模式打开生产页面验证

4. 确认后端API生产环境可用性

先直接用Postman调用生产API的接口,确认能正常返回响应;同时检查后端服务在生产环境是否正常运行,域名/端口是否可访问。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 15:40:01