php处理ajax跨域请求CORS方式

发布时间:2019-09-24作者:小灵龙点击:113

问题描述:
   正在做一个客户的网站,其中的页面都是我公司各个网站的几个页面结合。而其中一个网页需要弄到客户的网站上,但这个页面是筛选页面。如果直接扒过去,只能是一个静态页面,筛选功能是没有的。现在我需要使用ajax跨域调用数据,实现筛选的功能。
解决办法:

Ajax跨域请求:CORS

CORS,又称跨域资源共享,英文全称Cross-Origin Resource Sharing。假设我们想使用Ajax从a.com的页面上向b.com的页面上调用数据,通常情况由于同源策略,这种请求是不允许的,浏览器也会返回“源不匹配”的错误,所以就有了“跨域”这个说法。但是我们也有解决办法,我们可以再b.com的页面header信息中增加一行代码:

header("Access-Control-Allow-Origin: *");
当我们设置的header为以上信息时,任意一个请求过来之后服务端我们都可以进行处理和响应,那么在调试工具中可以看到其头信息设置,其中见红框中有一项信息是“*Access-Control-Allow-Origin:* ”,表示我们已经启用CORS,如果要限制只允许某个域名的请求,可以这样:
header("Access-Control-Allow-Origin: http://www.jinhuajaunke.cn");
在html页面中使用jquery的ajax.
<script>
$.ajax({
    type: "get",
    data: "random="+Math.random(),
    //data:{"classid":id,"name":username},传参的两种方式
    url: "http://www.jinhuajuanke.cn/phpajax/ajax.php",
    dataType: "json",
    success: function(data) {
        console.log(data);
        $("#result_3").html(data.msg+':'+data.rand);
            //var tableData = data.data; //表格数据
            //for (var i = 0; i < tableData.length; i++) {
                //var id=tableData[i].id;  
                //var nav_id=tableData[i].nav_id;
            
               // var tj=tableData[i].tj.replace('..','/static');
        
                //_html += '<tr>';
                //_html += '<td>' + xiaolei + '</td>';
                //_html += '<td>' + medianame + '</td>';
                //_html += '<td>' + content + '</td>';
                //_html += '</tr>';
               
            //}
           // $('#content').html(_html);
    },
    error: function() {
      $("#result_3").html('Request Error.');
    }
});
</script>

在另一个网站的目录中建立ajax.php

header("Access-Control-Allow-Origin: http://www.xxxxx.com");

$data = array(
    'rand' => $_GET['random'],
    'msg' => 'Success'
);
echo json_encode($data);

 

标签:ajax跨域,cors请求