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

Apache如何配置将请求Origin值设为Access-Control-Allow-Origin响应头

Apache 动态返回请求Origin作为跨域允许源配置方案

前置准备

首先需要确保Apache已启用mod_headers模块,该模块负责自定义HTTP响应头:

  • Debian/Ubuntu 系发行版:执行命令 a2enmod headers 启用模块
  • CentOS/RHEL 系发行版:检查httpd.conf中LoadModule headers_module modules/mod_headers.so配置行,若被注释则删除行首的#
    完成模块配置后重启Apache服务生效。

核心配置规则

在httpd.conf(或对应站点的独立配置文件)中添加如下规则即可实现需求:

# 匹配请求携带的Origin头,将值存入临时环境变量
SetEnvIf Origin "^(.*)$" CORS_ORIGIN=$0
# 仅当请求携带Origin头时,动态将响应头的Access-Control-Allow-Origin设置为请求来源值
Header always set Access-Control-Allow-Origin "%{CORS_ORIGIN}e" env=CORS_ORIGIN

可选扩展配置

如果你的跨域请求需要携带凭证(Cookie、Authorization认证头、TLS客户端证书等),必须额外添加如下配置,注意此时不能使用*通配符,动态返回Origin是唯一符合CORS规范的方案:

# 允许跨域请求携带凭证
Header always set Access-Control-Allow-Credentials "true" env=CORS_ORIGIN
# 允许的跨域请求方法,可按需调整
Header always set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, PATCH, OPTIONS" env=CORS_ORIGIN
# 允许跨域请求携带的自定义头,可按需调整
Header always set Access-Control-Allow-Headers "Content-Type, Authorization, X-Requested-With" env=CORS_ORIGIN

安全提示

上述配置默认允许所有来源跨域访问,和直接配置*的开放范围一致,只是满足了动态返回Origin的格式要求。如果需要限制仅可信来源跨域访问,可修改SetEnvIf的正则规则为白名单匹配,例如仅允许example.com子域和本地调试端口跨域:

SetEnvIf Origin "^https?://(.*\.example\.com|localhost:[0-9]+)$" CORS_ORIGIN=$0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:15:29