小知识: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实现跨域,这对于前端来说是极大的福音了,这个技术被现在大多数浏览器所普遍支持,因为跨域已经是普遍的要求,浏览器肯定会逐渐流出适当的‘后门出来专门用以跨域。

浏览器支持情况

%小知识:Apache中配置支持CORS(跨域资源共享)实例-猿站网-插图

经本人测试IE浏览器中IE10及以上才可正常发送请求

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

设置Apache:Apache需要使用mod_headers模块来激活HTTP头的设置,它默认是激活的。你只需要修改Apache配置文件中的httpd.conf文件:

原始代码

复制代码 代码如下:

AllowOverride none

Require all denied

</Directory>

改为下面代码

复制代码 代码如下:

Require all denied

Header set Access-Control-Allow-Origin *

</Directory>

在处理请求的PHP文件中设置:

复制代码 代码如下:

    header(“Access-Control-Allow-Origin:*”);

    //处理请求输出数据

?>

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

httpd.conf中:

复制代码 代码如下:
Header set Access-Control-Allow-Origin http://www.tuohang.net

php文件中:

复制代码 代码如下:
header(“Access-Control-Allow-Origin:http://www.tuohang.net”);

前台代码:

复制代码 代码如下:

function createCORSRequest(method, url) {

var xhr = new XMLHttpRequest();

if (“withCredentials” in xhr) {

// 此时即支持CORS的情况

// 检查XMLHttpRequest对象是否有“withCredentials”属性

// “withCredentials”仅存在于XMLHTTPRequest level 2对象里

} else {

// 否则检查是否支持XDomainRequest

// XDomainRequest仅存在于IE中,是IE用于支持CORS请求的方式

xhr = new XDomainRequest();

}

xhr.open(method, url, true);

xhr.send();

xhr.onload = function(){

alert(xhr.responseText);

}

}

createCORSRequest(GET, “http://192.168.1.58/t.php”);

</script>
声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:Apache mod_rewrite中的REQUEST_URI使用实例

2023-3-17 10:55:11

建站知识

小知识:Apache配置文件中的deny与allow小结

2023-3-17 11:09:38

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索