讲师中心 微信公众号
AI工具推荐 视频效率加速

如何正确配置 Heroku 自定义域名下的 CORS 与前端 API 地址

冬芳小哥_1667

冬芳小哥_1667

发布时间:2026-07-13 18:34:23

|

707人浏览过

|

来源于php中文网

原创

如何正确配置 Heroku 自定义域名下的 CORS 与前端 API 地址

本文详解在 Heroku 部署 MERN 应用并绑定 GoDaddy 自定义域名(如 www.sunshine.xyz)后,如何安全、准确地配置 ORIGIN(CORS)和 REACT_APP_SERVER(前端请求地址)两个关键环境变量,避免前后端通信失败。

本文详解在 heroku 部署 mern 应用并绑定 godaddy 自定义域名(如 `www.sunshine.xyz`)后,如何安全、准确地配置 `origin`(cors)和 `react_app_server`(前端请求地址)两个关键环境变量,避免前后端通信失败。

当您成功将自定义域名(例如 www.sunshine.xyz)解析至 Heroku 应用,并启用自动 SSL 后,前端可正常访问,但常出现“跨域被拒”或“API 请求 404/500”等问题——这通常并非 DNS 或证书问题,而是环境变量配置失当所致。核心在于理解两个变量的职责与作用域:

✅ ORIGIN(后端 CORS 配置)

该变量控制 Express 的 cors() 中间件允许哪些来源发起跨域请求。必须精确匹配前端实际访问的协议 + 域名 + 端口(若非标准端口)。

  • ❌ 错误做法:设为 true(开放所有来源,存在严重安全风险)
  • ✅ 正确做法:明确列出受信任的前端地址(支持数组)
    // server.js
    const cors = require('cors');
    const origin = process.env.ORIGIN?.split(',') || [];

app.use(cors({ credentials: true, origin: origin.length > 0 ? origin : false // false = 禁用 CORS(开发时慎用) }));

在 Heroku CLI 中设置(推荐使用 HTTPS 完整地址):
```bash
heroku config:set ORIGIN="https://www.sunshine.xyz,https://sunshine.xyz" -a your-app-name

⚠️ 注意:若同时支持 www 和裸域名,务必两者都写入;Heroku 不会自动重定向 sunshine.xyz → www.sunshine.xyz,需在 GoDaddy 设置 301 重定向或后端统一处理。

✅ REACT_APP_SERVER(前端请求基地址)

这是 React 应用中 fetch() 调用的后端 API 根路径。它必须指向您的 Heroku 后端服务地址,而非前端域名。常见误区是将其设为 https://www.sunshine.xyz —— 这会导致前端向自己发送请求(即请求静态资源服务器),而非真正的 Node.js 后端。

PigX UI 前端开发
PigX UI 前端开发

PigX UI Pro 前端开发指南 - Vue 3 + TypeScript + Element Plus。当用户提到 PigX UI、PigX 前端、lgb-mgui 项目、Vue 3 企业级后台开发、Element Plus 后台开发时使用此技能。

下载

立即学习“前端免费学习笔记(深入)”;

  • ✅ 正确值:Heroku 提供的默认应用 URL(带 .herokuapp.com 后缀)
    https://your-app-name-12345.herokuapp.com
  • ✅ 更佳实践:使用 Heroku DNS 目标(更稳定,不受应用重命名影响)
    https://infinite-rat-vvdkv7ml30w78pt7a30aor61.herokudns.com

    设置命令:

    heroku config:set REACT_APP_SERVER="https://your-app-name-12345.herokuapp.com" -a your-app-name

? 额外关键检查项

  1. 前端构建时注入变量:确保 REACT_APP_SERVER 在 create-react-app 中以 REACT_APP_ 前缀声明,且在 npm run build 时已固化到静态文件中(运行时不可变)。
  2. 后端路由兜底:若使用 create-react-app + Express,务必添加 SPA 路由兜底,避免刷新 https://www.sunshine.xyz/some-route 时返回 404:
    // server.js(放在所有路由之后、app.listen() 之前)
    if (process.env.NODE_ENV === 'production') {
      app.use(express.static(path.join(__dirname, 'frontend', 'build')));
      app.get('*', (req, res) => {
        res.sendFile(path.join(__dirname, 'frontend', 'build', 'index.html'));
      });
    }
  3. HTTPS 强制与 Cookie 安全:若启用 credentials: true,后端响应头需含 Access-Control-Allow-Origin(不能为 *),且 Cookie 必须标记为 Secure + SameSite=None:
    app.use(session({
      secret: 'your-secret',
      resave: false,
      saveUninitialized: false,
      cookie: { 
        secure: true,      // 仅 HTTPS 传输
        httpOnly: true,
        sameSite: 'none'   // 允许跨站携带 Cookie
      }
    }));

? 总结

变量 推荐值 说明
ORIGIN "https://www.sunshine.xyz,https://sunshine.xyz" 精确白名单,禁用 true
REACT_APP_SERVER "https://your-app-name-12345.herokuapp.com" 指向后端服务,非前端域名

配置完成后,执行 git commit -m "update env vars" → git push heroku main 重新部署。可通过浏览器开发者工具 Network 面板验证:

  • 前端请求是否发往 your-app-name-12345.herokuapp.com(而非 www.sunshine.xyz)
  • 后端响应头是否含 Access-Control-Allow-Origin: https://www.sunshine.xyz

至此,您的 MERN 应用即可在 GoDaddy 自定义域名下安全、稳定运行。

热门AI工具

更多
Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2123

2023.08.11

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

4543

2023.10.09

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

5690

2024.03.19

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

5138

2024.03.22

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

723

2024.05.22

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

120

2026.09.23

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

40

2026.09.23

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

40

2026.09.23

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

20

2026.09.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn