今天学习的运用php实现 ajax的跨域通讯

首先ajax的通信方式只能实现本地文件之间的数据通信,如果要实现同其他主机的通信的话需要用到file_get_content(),这个函数;

实现这个功能我们至少需要三个文件,分别为 Clien.html(客户端),server.php(本地后台),server.php(其他主机的服务器文件);具体的实现步骤和部分代码如下:首先在Clien.html用ajax向本地server.php文件发送用户请求代码如下:

<body onload="aaa()">

</body>
<script>
    function aaa() {
        $.ajax({
            type: "post",
            url: "http.php",
            data: {
                "url": "http://192.168.4.101:90/PHPStudy4/server.php",
                "username": "admin",
                "password": "admin"
            },
            success: function (dat) {
//                var rel = eval("(" + dat + ")");
//                console.log(rel);
                console.log(dat);
            }
        })
    }
</script>

在本地server.php文件中对请求就处理将发送过来的请求采用http协议发送到的别人的主机中;代码如下:

header("Content-type:text/html;charset=utf-8");
if($_SERVER["REQUEST_METHOD"]=="POST"){
   if(isset($_POST["url"]) && isset($_POST["username"]) && isset($_POST["password"])){
       echo PostMessage($_POST["url"],array("username"=>$_POST["username"],"password"=>$_POST["password"]));
   }else{
       echo "数据不完整";
   }
}else{
    echo json_encode(array("CW"=>"error"));
}

function PostMessage($url,$data){
   $query=http_build_query($data);
    $option=array(
        "http"=>array(
            "header"=>"Content-Type:application/x-www-form-urlencoded\r\n".
            "Content-Length:".strlen($query)."\r\n".
                "User-Agent:MyAgent/1.0\r\n",
            "method"=>"POST",
            "content"=>$query
        )
    );
    $context=stream_context_create($option);
    $result=file_get_contents($url,false,$context,-1,40000);
   return $result;
}

然后别的主机中的Server.php根据发送过来的请求返回相应的数据:

 

posted @ 2016-07-21 14:59  小蜗牛爬的慢啊  阅读(166)  评论(0)    收藏  举报