Apache中配置支持CORS(跨域资源共享)实例
当使用ajax跨域请求时,浏览器报错:XmlHttpRequest error: Origin null is not allowed by Access-Control-Allow-Origin.肯定是跨域的问题,如果用jsonp或者proxy的方式进行修改的话未免需要太大的工程量,所以采用CORS这种比较简单高效的技术。相比JOSP的方式,CORS更为高效。JSONP由于它的原理只能实现GET请求,而CORS支持所有类型的HTTP请求。使用CORS,可以使用普通的ajax实现跨域,这对于前端来说是极大的福音了,这个技术被现在大多数浏览器所普遍支持,因为跨域已经是普遍的要求,浏览器肯定会逐渐流出适当的‘后门'出来专门用以跨域。
浏览器支持情况
经本人测试IE浏览器中IE10及以上才可正常发送请求
1.服务器端对于CORS的支持,是通过设置Access-Control-Allow-Origin来进行的。如果浏览器检测到相应的设置,就可以允许Ajax进行跨域的访问,也就是相应的‘后门'。
设置Apache:Apache需要使用mod_headers模块来激活HTTP头的设置,它默认是激活的。你只需要修改Apache配置文件中的httpd.conf文件:
原始代码
代码如下:
<Directory />
AllowOverride none
Require all denied
</Directory>
AllowOverride none
Require all denied
</Directory>
改为下面代码
代码如下:
<Directory />
Require all denied
Header set Access-Control-Allow-Origin *
</Directory>
Require all denied
Header set Access-Control-Allow-Origin *
</Directory>
在处理请求的PHP文件中设置:
代码如下:
<?php
header("Access-Control-Allow-Origin:*");
//处理请求输出数据
header("Access-Control-Allow-Origin:*");
//处理请求输出数据
?>