Apache如何解决跨域问题
创始人
2024-03-24 11:04:44

方案一:直接在域名配置中允许跨域

缺点:安全性缺失。公交车,谁都能访问。相当于完全放弃跨域控制。
且无法发送登陆凭证,发送cookie等依然会被拦截

1.修改apache/conf/httpd.conf 文件

找到   #LoadModule headers_module modules/mod_headers.so,把#注释符去掉,目的是开启apache头信息自定义模块

2.找到你的虚拟主机文件 注意是被跨域的网站的  具体内容是这样的文件

也有可能是别的样子的,但是   不变

 
    DocumentRoot "E:/www/"
    ServerName test..com
    ServerAlias *.test.com
   
        AllowOverride All
        Require all granted
   

在这段配置中的 前面添加以下配置:

#对所有域名开放       

Header set Access-Control-Allow-Origin *   (这样加上一行)

#对指定域名开放

Header set Access-Control-Allow-Origin http://www.***.com  (或者这样加上一行)

重启apache生效。

方案二:php代码中增加跨域设置

$origin = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : "*";
header('Access-Control-Allow-Origin:' . $origin);
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Headers: Content-Type, X-Requested-With, Cache-Control,Authorization");

优点:可以根据白名单来开启是否跨域。发送cookie等凭证不会被拦截
缺点:文件等静态文件不经过php处理,依然会被跨域拦截
上述代码没有加白名单,需要的自己加

方案三:.htaccess中添加设置

修改.htaccess配置文件,重启apache生效

SetEnvIf Origin "^http(s)?://(.+\.)?(submit.magazine.ubandev.com|localhost:8080)$" origin_is=$0
Header always set Access-Control-Allow-Origin %{origin_is}e env=origin_is
Header set Access-Control-Allow-Credentials true

优点:无需修改apache域名配置。静态文件也可设置响应头,可以跨域。正则之后响应头只有一个域名,可以发送cookie

相关内容

热门资讯

2026年度山东省省级机关公开...       一、笔试合格分数线      2026年度山东省省级机关公开遴选公务员笔试合格分数线为:...
伊朗最高领袖穆杰塔巴:将为哈梅... (来源:深圳商报)当地时间7月11日,伊朗最高领袖穆杰塔巴发表声明表示,将为已故最高领袖哈梅内伊和最...
突传重磅!美国,拟放宽芯片出口... AI芯片巨头,迎来重磅利好!据多家外媒报道,美国拟放宽对阿联酋的出口限制,阿联酋可以自由进口英伟达、...
长江海事局提升防台应急响应至二... 今年第9号台风“巴威”预计于7月11日至13日对长江中下游的湖北东部、江西、安徽等地造成影响。据长江...
龙头20CM涨停 本周披露并购... 财联社7月11日讯(编辑 平方)A股市场并购重组持续活跃。截至周五收盘,拟发行股份及支付现金购买海兰...