javascript 做异步请求的时候, 请求json数据,如果在不同的子域下。
例如: a.example.com 请求b.example.com 的数据,需要增加
<?php
header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
?>
为了数据安全建议,做判断
if (strpos($_SERVER['HTTP_ORIGIN','.example.com')!==false){
header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
}
如果需要跨域请求cookie,在client端的javascript 代码需要增加
xhrFields: { withCredentials:true }
<script>
$.ajax({
type: 'POST',
url: "http://b.example.com/?",
xhrFields: { withCredentials:true },
success: function (data){
console.log(data);
}
</script>
在服务器端的头信息需要返回
Access-Control-Allow-Credentials: true
使用php代码为
<?php
header("Access-Control-Allow-Credentials: true");
//且返回的cookie需要增加上级域名
setcookie('user','yubing', time()+86400,'/','example.com');
?>