Apache 实现AJAX跨域请求

AndyYang| 阅读:1651 发表时间:2014-12-10 23:35:38 phpapache
摘要:当使用ajax跨域请求时,浏览器报错:XmlHttpRequest error: Origin null is not allowed by Access-Control-Allow-Origin.肯定是跨域的问题,如果用jsonp或者proxy的方式进行修改的话未免需要太大的工程量,所以采用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实现跨域,这对于前端来说是极大的福音了,这个技术被现在大多数浏览器所普遍支持,因为跨域已经是普遍的要求,浏览器肯定会逐渐流出适当的‘后门'出来专门用以跨域。

浏览器支持情况

服务器端对于CORS的支持,是通过设置Access-Control-Allow-Origin来进行的。如果浏览器检测到相应的设置,就可以允许Ajax进行跨域的访问。

具体操作方法, 可以通过不同入口来控制:
一、php代码控制:
<?php
header("Access-Control-Allow-Origin: *");
?>
二、html头控制:
<meta http-equiv="Access-Control-Allow-Origin" content="*">
三、nginx配置:
<Directory />
#在具体的站点目录修改也可以,比如:
#<Directory "E:\workspace\test">
    Header set Access-Control-Allow-Origin *
    #添加上面这句话即可
</Directory>

配置的含义是允许任何域发起的请求都可以获取当前服务器的数据。当然,这样有很大的危险性,恶意站点可能通过XSS攻击我们的服务器。所以我们应该尽量有针对性的对限制安全的来源,比如说将*替换为http://www.webyang.net,设置使得只有http://www.webyang.net这个域才能跨域访问。

Nginx 实现AJAX跨域请求可以参考:http://www.webyang.net/Html/web/article_135.html

本文为AndyYang原创,转载请注明出处!
如果您觉得好,可以打赏作者:
如果您觉得累了,是否想眺望远方:猛戳>>若兰网

已有0条评论

昵称:
邮箱:

  • 最新评论

若兰网 - www.rolan.wang
反馈
微信订阅号