由于安全的限制(同源策略,javascript只能访问同域名下的内容),如果需要进行跨域操作,那就免不了要进行跨域。
在www.a.com的index.php如下:
在b.com的index.php中用jquery的get方法来发送请求,正常情况下会失败。
访问结果如下:
当然我们也可以指定可以访问的域名。
CORS浏览器的支持情况如下图:
CORS(跨域资源共享,Cross-Origin Resource Sharing)是一种解决跨域的方案。
详细的描述还请查阅:
http://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如下:
<!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>
<?php $a = !empty($_GET['a']) ? trim($_GET['a']) : ''; if($a == 'getUserInfo') { echo json_encode(array( 'uid' => 1, 'name' => '测试', )); } else { echo ''; }
那么我们只需要在a.com的index.php中添加如下代码,则b.com就可访问。
header('Access-Control-Allow-Origin: *');
Id:1 Name:测试
header('Access-Control-Allow-Origin: http://www.b.com');