问答详情
源自:5-16 被调用方解决跨域 - apache解决方案_x264

重启后,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>


提问者:qq_竹轩_0 2018-04-02 11:00

个回答

  • 慕妹2082672
    2019-06-14 10:21:27

    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服务可以正常启动。然后就可以实现老师所说的跨域请求功能了。

  • 光之心MAX
    2018-12-16 16:40:39

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

  • 慕勒2932339
    2018-04-06 12:50:46

    参考课程中Apache的配置