发布于2026-07-12 阅读(0)
扫一扫,手机访问
在LAMP环境下处理跨域访问,其实是不少开发者都会遇到的场景。你配置好了后端接口,前端一调,浏览器直接给你来个跨域拦截——这时候就需要在服务端做点手脚来放行。下面整理了几种在Apache+PHP环境下常用的实践方案,供你参考。

mod_headers模块配置这是最直接的做法——让Apache在响应里主动带上跨域相关的HTTP头。
首先确认mod_headers模块是否已启用,没启用的话需要手动激活:
sudo a2enmod headers然后编辑你的虚拟主机配置文件(路径通常类似 /etc/apache2/sites-a vailable/your-site.conf),在对应的 VirtualHost 块里添加如下内容:
ServerName your-site.com
# 允许跨域访问
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
Header set Access-Control-Allow-Headers "Content-Type, Authorization"
# 处理预检请求
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]
DocumentRoot /var/www/your-site
配置完后记得重启Apache,让改动生效:
sudo systemctl restart apache2.htaccess文件如果你没有虚拟主机配置的权限,或者只想针对某个站点做调整,.htaccess 是更灵活的选择。
在网站根目录下创建或编辑 .htaccess 文件,写入以下规则:
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
Header set Access-Control-Allow-Headers "Content-Type, Authorization"
# 处理预检请求
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]同时要确保Apache的主配置允许 .htaccess 覆盖——检查 /etc/apache2/apache2.conf 或 /etc/httpd/conf/httpd.conf 中对应的 AllowOverride 选项是否为 All:
AllowOverride All同样重启Apache:
sudo systemctl restart apache2如果连Apache都动不了,那就退而求其次——在PHP代码层面处理。每支需要跨域访问的脚本入口加上头信息即可:
这种方式对服务器配置无侵入,但缺点是每支PHP文件都得手动处理,维护起来稍微麻烦些。
Access-Control-Allow-Origin 的 * 替换成具体的域名,比如 https://your-frontend.com,避免被任意站点调用。PUT、DELETE 等方法时,浏览器会先发一个 OPTIONS 请求探路。服务器必须对这个预检请求返回200且带上对应的跨域头,才能真正放行后面的主请求。三种方法各有适用场景,根据你的项目权限和习惯选一个就行。配置好了之后,跨域问题基本上就能解决了。
上一篇:怎样用Telnet进行日志分析
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8