CURL 解决跨域POST问题

CURL 解决跨域POST问题

作者:LAMP小白  点击:12592  发布日期:2012-11-07 22:47:00  返回列表
由于需要POST跨域,所以JQUERY的getJSON方法妥妥的杯具鸟
而且需要跨域的网站不是自己的,所以iframe跨域也不行

怎么办呢?于是想到了CURL

百度了一下,收集到了一些参数,然后归纳起来写出了这个POST跨域的代码

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//POST数据!
curl_setopt($ch, CURLOPT_POST, 1);
//把post的变量加上
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$output = curl_exec($ch);
curl_close($ch);
//返回的结果
echo $output;

1.当然是初始化CURL资源了
$ch = curl_init();

2.其次,我们需要进行一些设置

CURLOPT_URL

需要获取的URL地址,也可以在curl_init()函数中设置。

CURLOPT_RETURNTRANSFER

将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。

CURLOPT_POST

启用时会发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样

CURLOPT_POSTFIELDS

全部数据使用HTTP协议中的mio_quot;POSTmio_quot;操作来发送。要发送文件,在文件名前面加上@前缀并使用完整路径。这个参数可以通过urlencoded后的字符串类似mio_#39;para1=val1mio_para2=val2mio_...mio_#39;或使用一个以字段名为键值,字段数据为值的数组。如果value是一个数组,Content-Type头将会被设置成multipart/form-data

3.执行传输

mixed curl_exec ( resource $ch )

4.获取接口的返回值

如果我们不设置CURLOPT_RETURNTRANSFER为true的话,返回值将被直接打印到屏幕上,我们没办法再对其进行处理了
当然这里我也没有对返回值进行处理,这样做的话,是为了以后功能扩展准备
显示返回值给AJAX程序结束


上一篇:CURL设置和初始化 下一篇:快递查询API
0