在被请求的Response header中加入
// 指定允许其他域名访问
header('Access-Control-Allow-Origin:*');
// 响应类型
header('Access-Control-Allow-Methods:POST');
// 响应头设置
header('Access-Control-Allow-Headers:x-requested-with,content-type');
就可以实现ajax POST跨域访问了。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title> AJAX跨域测试 </title>
<script
</head>
<body>
<div id="show"></div>
<script type="text/javascript">
$.post("./ajax.php",{status:"sucess",msg:"AJAX"})
.done(function(data){
document.getElementById("show").innerHTML = data.msg + ' <B>' + data.status;
});
</script>
</body>
</html>
$data = [
'status' => isset($_POST['status'])? $_POST['status'] : '',
'msg' => isset($_POST['msg'])? $_POST['msg'] : ''
];
header('content-type:application:json;charset=utf8');
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:POST');
header('Access-Control-Allow-Headers:x-requested-with,content-type');
echo json_encode($data);
Access-Control-Allow-Origin:* 表示允许任何域名跨域访问
ajax.php 修改为
<?php
$data = [
'status' => isset($_POST['status'])? $_POST['status'] : '',
'msg' => isset($_POST['msg'])? $_POST['msg'] : ''
];
header('content-type:application:json;charset=utf8');
$origin = isset($_SERVER['HTTP_ORIGIN'])? $_SERVER['HTTP_ORIGIN'] : '';
$allow_origin = array(
);
if(in_array($origin, $allow_origin)){
header('Access-Control-Allow-Origin:'.$origin);
header('Access-Control-Allow-Methods:POST');
header('Access-Control-Allow-Headers:x-requested-with,content-type');
echo json_encode($data);
}else{
$rs = [
'status'=>'error',
'msg'=>'Cross domain is not allowed'
];
echo json_encode($rs);
}
?>
效果图如下:
这里写图片描述