为了账号安全,请及时绑定邮箱和手机立即绑定

重启后,Apache的跨域配置没有生效?

1、配置Apache服务器后,本地测试,页面访问b.com域名是可以的。但是跨域的配置却没有生效。

2、相关的header模块、rewrite模块都打开了。httpd-2.3.33的Apache虚拟主机配置文件如下:

<VirtualHost *:80>

    ServerName b.com

    ErrorLog "logs/b.com-error.log"

    CustomLog "logs/b.com-access.log" common

ProxyPass /http://localhost:8080/

#把请求头的origin值返回到Access-Control-Allow-Origin字段

Header always set Access-Control-Allow-Origin "expr=%{req:origin}"

#把请求头的Access-Control-Request-Headers值返回到Access-Control-Allow-Headers字段

Header always set Access-Control-Allow-Headers "expr=%{req:Access-Control-Request-Headers}"

Header always set Access-Control-Allow-Methods "*"

Header always set Access-Control-Allow-Credentials "true"

Header always set Access-Control-Max-Age "3600"

#处理预检命令OPTIONS,直接返回204

RewriteEngine On

RewriteCond %{REQUEST_METHOD} OPTIONS

RewriteRule ^(.*)$ "/" [R=204,L]

</VirtualHost>


正在回答

3 回答

ProxyPass / http://localhost:8080/ ,第一个“/” 两边都有空格,按照老师的配置,在某些 apache 版本不会启动成功,发生闪退现象,原因是某些功能还没开启。用命令行的方式,进入到apache的bin目录,配置完文件后,需要进行配置是否正确的检验,终端输入:httpd.exe -t,就会得到报错的闪退原因,我用的时apache2.4.39,发现Header和RewriteEngine功能未开启,需要在httpd.conf中找到LoadModule headers_module modules/mod_headers.so和LoadModule rewrite_module modules/mod_rewrite.so,把这两行的#去掉,再进行配置文件是否正确的检查,发现配置文件已经正确,并且Apache服务可以正常启动。然后就可以实现老师所说的跨域请求功能了。

1 回复 有任何疑惑可以回复我~

ProxyPass /http://localhost:8080/ ,貌似第一个“/” 两边都有空格= =

0 回复 有任何疑惑可以回复我~

参考课程中Apache的配置

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

重启后,Apache的跨域配置没有生效?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信