Apache配置CORS需三步:启用mod_headers模块、用Header always set添加响应头、通过mod_rewrite处理OPTIONS预检请求;推荐将配置抽离至独立文件并通过Include复用,确保跨域策略统一可控。

Apache 可以通过 Include 指令把 CORS 相关配置抽离到独立文件中,实现一处定义、多处复用。这种方式适合管理多个虚拟主机或子目录的统一跨域策略,避免重复粘贴、便于集中维护和灰度更新。
创建独立的 CORS 配置文件
在 Apache 配置目录下(如 /etc/apache2/conf-available/ 或 /usr/local/etc/apache24/extra/)新建一个文件,例如:cors-headers.conf
内容如下(注意:使用 Header always set 确保响应头始终生效,尤其对 204/304 等非主体响应):
Header always set Access-Control-Allow-Origin "https://your-frontend.com"
Header always set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
Header always set Access-Control-Allow-Headers "Content-Type, Authorization, X-Requested-With"
Header always set Access-Control-Allow-Credentials "true"
Header always set Access-Control-Max-Age "86400"
Header always set Vary "Origin"
</IfModule>
在虚拟主机或目录配置中引入
打开对应站点的 <VirtualHost> 或 <Directory> 块,在需要启用 CORS 的位置插入:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
Include /path/to/cors-headers.conf- 路径必须是绝对路径;若用相对路径,需确保 Apache 启动时工作目录一致(不推荐)
- 建议放在
<VirtualHost>内部靠前位置,或紧邻<Directory>块开头
处理 OPTIONS 预检请求(关键补充)
仅设响应头还不够——浏览器发出的 OPTIONS 请求必须被 Apache 正确响应,否则后续请求不会发出。在同一个 cors-headers.conf 文件末尾追加:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]
</IfModule>
该规则让所有 OPTIONS 请求直接返回 200 状态码,不执行后端脚本,快速通过预检。
启用并验证
完成配置后执行:
- 检查语法:
sudo apachectl configtest - 重载服务:
sudo systemctl reload apache2(Debian/Ubuntu)或sudo apachectl graceful - 用 curl 测试响应头:
curl -I -X OPTIONS https://yoursite.com/api/test,确认包含Access-Control-Allow-Origin等字段 - 前端发起带自定义 Header 的请求,观察浏览器控制台是否仍报 CORS 错误

















