apache2 跨域配置

### 配置 Apache2 支持 CORS 资源共享 为了使 Apache2 支持资源共享 (CORS),可以利用 `mod_headers` 模块向 HTTP 响应添加必要的头部信息。以下是具体方法: #### 安装并启用 mod_headers 模块 确保已安装 `mod_headers` 并将其加载到 Apache 中。 对于基于 Debian 的系统,执行如下命令以确认模块是否已经激活: ```bash a2enmod headers service apache2 restart ``` 这将启动该模块,并重启服务使其生效。 #### 设置全局 CORS 头部 可以在主配置文件或虚拟主机配置中设置通用的 CORS 规则。编辑 `/etc/apache2/sites-available/000-default.conf` 或相应的站点配置文件,在 `<Directory>` 或者 `<Location>` 指令内加入以下内容来允许来自任何源的请求[^1]: ```apacheconf <IfModule mod_headers.c> Header set Access-Control-Allow-Origin "*" </IfModule> ``` 上述代码片段设置了 `Access-Control-Allow-Origin` 为通配符 (`*`) ,意味着所有来源都被授权访问资源;然而出于安全考虑,建议仅限于信任的具体名列表。 #### 对特定路径应用 CORS 策略 针对某些目录下的资源实施更严格的控制策略时,可采用如下方式定义更为精细的规则集: ```apacheconf <Location "/api"> SetEnvIf Origin "^(http(s)?://(www\.)?(example\.com|anotherdomain\.org))$" origin_is=$1 Header always set Access-Control-Allow-Origin "%{origin_is}e" env=origin_is Header always set Access-Control-Allow-Methods "GET, POST, OPTIONS" Header always set Access-Control-Allow-Headers "Content-Type, Authorization" Header always set Access-Control-Allow-Credentials "true" # 解决预检请求OPTIONS不缓存的问题 RewriteEngine On RewriteCond %{REQUEST_METHOD} OPTIONS RewriteRule ^(.*)$ $1 [R=204,L] </Location> ``` 此段脚本实现了对 `/api` 下接口的支持,只接受来自 example.com 和 anotherdomain.org 的请求,并指定了允许的方法和自定义头信息。同时启用了凭证共享功能(`Access-Control-Allow-Credentials: true`),需要注意的是此时不允许使用通配符作为 `Access-Control-Allow-Origin` 的值[^2]。 完成以上更改之后,请记得保存修改过的配置文件,并重新加载 Apache 服务以便更新后的设定能够立即生效。 ```bash service apache2 reload ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值