加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

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

发布时间:2020-05-25 08:10:04 所属栏目:PHP 来源:互联网
导读:由于安全的限制(同源策略,javascript只能访问同域名下的内容),如果需要进行跨域操作,那就免不了要进行跨域。 CORS(跨域资源共享,Cross-Origin Resource Sharing

由于安全的限制(同源策略,javascript只能访问同域名下的内容),如果需要进行跨域操作,那就免不了要进行跨域。 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>
在www.a.com的index.php如下:
<?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方法来发送请求,正常情况下会失败。 那么我们只需要在a.com的index.php中添加如下代码,则b.com就可访问。
header('Access-Control-Allow-Origin: *');
访问结果如下:
Id:1 Name:测试
当然我们也可以指定可以访问的域名。
header('Access-Control-Allow-Origin: http://www.b.com');
CORS浏览器的支持情况如下图:

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读