4
PHP下ajax跨域的解决方案之CORS

由于安全的限制(同源策略,javascript只能访问同域名下的内容),如果需要进行跨域操作,那就免不了要进行跨域。 CORS(跨域资源共享,Cross-Origin Resource Sharing)是一种解决跨域的方案。详细的描述还请查阅:

12http://www.w3.org/TR/cors/https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS

 比如我有两个虚拟主机(apache本地配置),www.a.com和www.b.com现在b.com上要获取a.com的登陆信息,比如用户ID,用户名等。 在www.b.com的index.php如下:

1234567891011121314151617<!doctype html><html lang="zh-cn"><head>    <meta charset="UTF-8" />    <title></title></head><body>    <div class="userInfo"></div></body><script type="text/javascript" src="./jquery.js"></script><script type="text/javascript">    var url = "http://www.a.com/index.php";    $.get(url, {a : "getUserInfo"}, function(data) {        $(".userInfo").text("Id:" + data.uid + " Name:" + data.name);    }, "json");</script></html>

在www.a.com的index.php如下:

1234567891011<?php$a = !empty($_GET['a']) ? trim($_GET['a']) : ''; if($a == 'getUserInfo') {    echo json_encode(array(        'uid' => 1,        'name' => '测试',    ));else {    echo '';}

在b.com的index.php中用jquery的get方法来发送请求,正常情况下会失败。PHP下ajax跨域的解决方案之CORS - 怀素真 - 因上努力 果上随缘那么我们只需要在a.com的index.php中添加如下代码,则b.com就可访问。

1header('Access-Control-Allow-Origin: *');

访问结果如下:

1Id:1 Name:测试

当然我们也可以指定可以访问的域名。

1header('Access-Control-Allow-Origin: http://www.b.com');

 CORS浏览器的支持情况如下图:

6631382226028981239.png


这条帮助是否解决了您的问题? 已解决 未解决

提交成功!非常感谢您的反馈,我们会继续努力做到更好! 很抱歉未能解决您的疑问。我们已收到您的反馈意见,同时会及时作出反馈处理!