如何使用PHP CURL绕过跨域

时间:2014-03-27 02:00:16

标签: php curl cross-domain

我需要PHP将参数从一个域提交到另一个域。 JavaScript不适合我的情况。我现在正在尝试将CURL与PHP一起使用,但是绕过跨域还没有成功。

从domain_A,我有一个页面,其中包含以下带有CURL脚本的PHP:     

if (_iscurl()){
    echo "<p>CURL is enabled</p>";
    $url = "http://domain_B/process.php?id=123&amt=100&jsonp=?";

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,10);
    curl_setopt($ch, CURLOPT_USERAGENT , "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
    curl_setopt($ch, CURLOPT_URL, $url );
    $return = curl_exec($ch);
    curl_close($ch);

    echo "<p>Finished operations</p>";
}
else{
    echo "CURL is disabled";
}
?>

我没有得到任何结果,所以我假设P​​HP CURL脚本不成功。有什么想法来解决这个问题吗?

由于

2 个答案:

答案 0 :(得分:7)

嗯,有点晚了。但为可能面临类似问题的其他读者添加此答案。当我们将来自 http 托管的域的php curl请求发送到通过 https(http over ssl)托管的域时,会出现此问题。

只需在执行curl之前添加以下代码段。

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);

答案 1 :(得分:1)

CURLOPT_RETURNTRANSFER中使用false不会通过curl返回任何内容。将其设为true(或1

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);