qq_竹轩_0
2018-04-02 11:00
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>
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服务可以正常启动。然后就可以实现老师所说的跨域请求功能了。
ProxyPass /http://localhost:8080/ ,貌似第一个“/” 两边都有空格= =
参考课程中Apache的配置
ajax跨域完全讲解
62554 学习 · 90 问题
相似问题