利用PHP实现AJAX跨域HTTP GET
AJAX要实现跨域HTTP GET/POST本身就是很麻烦的,具体方法就不详细说了.
我是比较懒的人,只要实现功能就好,我平时最常用的是用PHP的file_get_contents,把远程的HTTP直接get到本地的php, 这样就不存在跨域的问题了.不过这个方法就不是很全面的,一方面速度比较慢,中转了一次.另一方面file_get_contents只支持标准的 HTTP.最近我就遇到一个情况了,对方是用ipworks写的一个简单80端口的输出.没有完整的HTTP HEADER.用file_get_contents就一直报错.后来改用curl就正常了,还是curl功能强大点.当然我这个方法只能用作简单的 HTTP GET.
ajax.php代码节选
if($_GET['action']=="geturl"){$url=trim($_GET['url'])//$content = file_get_contents($url,"r");
$ch=curl_init()
$timeout=5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$content=curl_exec($ch);
curl_close($ch);
echo $content;
exit;
}
js部分代码,当然是用jquery的
function ajaxopen(url){$.ajax({
url:'cam.php?action=geturl&url='+url,;//通过php获取远程信息,解决ajax跨域问题
cache:false,
type:"get",
async:false,
success:function(str){
//alert('成功了:'+str);
},
error:function(str){
alert('读取错误');
}
});
}
例子比较的简单,但能起到启发作用。