外贸站宝塔面板网站跨域请求API接口修复方案

问题现象与适用场景

外贸站经常需要前端页面向另一个域名或端口下的API接口发送请求,如果直接在浏览器访问,会看到控制台报错类似 Access-Control-Allow-Origin 缺失。
这个问题叫跨域(CORS),本质是浏览器安全策略限制了不同源之间的资源请求。
本文面向使用宝塔面板搭建的外贸站,教你通过修改Nginx或Apache配置文件来修复API接口的跨域问题。

准备工作:确认环境与接口信息

登录宝塔面板,先做三步检查:

  1. 确认Web服务器类型:在宝塔左侧点击“网站”,找到你的外贸站点,查看运行环境列是Nginx还是Apache。
  2. 确认API接口路径:例如接口地址是 https://api.yourdomain.com/v1/order,记录协议、域名和端口。
  3. 确认前端来源域名:比如前端页面部署在 https://www.yourstore.com,这个就是需要允许的源。

以上信息将直接用于配置跨域头。

核心操作:配置跨域响应头

情况一:Nginx 环境

  1. 在宝塔面板“网站”列表中点击站点对应的“设置”。
  2. 切换到“配置文件”标签页,找到 server 块内 location 部分(或增加到最外层)。
  3. location / 或对应API路径的 location 块内,插入以下代码:
add_header Access-Control-Allow-Origin 'https://www.yourstore.com';
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS, PUT, DELETE';
add_header Access-Control-Allow-Headers 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

# 处理预检请求(OPTIONS)
if ($request_method = 'OPTIONS') {
    add_header Access-Control-Max-Age 86400;
    add_header Content-Type 'text/plain charset=UTF-8';
    add_header Content-Length 0;
    return 204;
}
注意:如果接口需要携带 Cookie 或 HTTP 认证,需额外增加 add_header Access-Control-Allow-Credentials true;,且此时 Origin 必须使用具体域名,不能写 *
  1. 修改完成后点击“保存”,再点右上角“重载配置”或重启Nginx。

情况二:Apache 环境

  1. 在宝塔网站设置中找到“伪静态”或“配置文件”,一般使用 .htaccess
  2. 在网站根目录下编辑 .htaccess 文件(如果不存在可新建),添加以下内容:
Header set Access-Control-Allow-Origin "https://www.yourstore.com"
Header set Access-Control-Allow-Methods "GET, POST, OPTIONS, PUT, DELETE"
Header set Access-Control-Allow-Headers "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization"

# 处理预检请求
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=204,L]
  1. 保存文件,Apache会自动重载。如果未生效,在宝塔“服务”里重启Apache。

备用方案:PHP框架内设置

如果不想改服务器配置,也可以在API入口文件(如 index.php)开头添加:

header('Access-Control-Allow-Origin: https://www.yourstore.com');
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Authorization');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(204);
    exit;
}

这种方案适合无服务器配置修改权限的虚拟主机。

常见踩坑与避坑说明

  • 通配符 * 与凭据冲突:使用 Access-Control-Allow-Credentials: true 时,Origin 不能写 *,必须写具体域名。否则浏览器会直接拦截。
  • 预检请求未正确处理:如果前端发起了复杂请求(如自定义Header、PUT/DELETE),浏览器会先发 OPTIONS 预检。服务器必须返回 204 且包含允许的 MethodsHeaders,否则正式请求不会发起。
  • 宝塔面板版本差异:部分新版宝塔在配置文件里增加了“跨域”开关(在“网站”设置 > “反向代理”或“安全”选项卡),可以直接开启并填写域名,比手动改配置更简单。建议先检查是否有该功能。
  • 多个前端域名:可以写多行 add_header,但更稳妥的做法是让后端程序动态判断来源域名后返回对应 Origin

验证修复是否生效

  1. 浏览器开发者工具:打开F12,点击“网络”标签,刷新前端页面,找到发往API的请求。查看响应头中是否包含 Access-Control-Allow-Origin: https://www.yourstore.com
  2. curl 命令行测试:在服务器本地或任意终端执行:
curl -H "Origin: https://www.yourstore.com" -H "Access-Control-Request-Method: POST" -X OPTIONS -v https://api.yourdomain.com/v1/order

观察返回的响应头是否包含预期的 Access-Control-Allow-Origin

  1. 实际功能测试:在前端页面直接调用API,确认不再报跨域错误,并能正常获取数据。

如果仍不生效,可以回看宝塔面板的配置文件是否保存成功,或检查是否有其他中间件(如CDN)覆盖了跨域头。
按照本文步骤完整执行,绝大多数外贸站跨域问题都能解决。

分享到:
上一篇
跨境独立站宝塔面板服务器SSH密钥登录禁用密码
下一篇
家用住宅主机Linux gRPC接口AI中转服务部署
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意