【问题标题】:How to use PHP CURL to bypass cross domain如何使用 PHP CURL 绕过跨域
【发布时间】:2014-05-05 19:00:24
【问题描述】:

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

在 domain_A 中,我有一个带有以下 PHP 和 CURL 脚本的页面:

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";
}
?>

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

谢谢

【问题讨论】:

    标签: php curl cross-domain


    【解决方案1】:

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

    只需在 curl 执行之前添加下面的代码 sn-p 即可。

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

    【讨论】:

      【解决方案2】:

      CURLOPT_RETURNTRANSFER 中使用 false 不会通过 curl 返回任何内容。让它true(或1)

      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      

      【讨论】:

      • 您好,该参数已设置为true,即curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);但我仍然得到相同的结果。会不会是有端口阻塞了调用?
      • 我已经包含了一个错误跟踪: if(curl_errno($ch)) { echo 'error#:' 。 curl_errno($ch) 。 '/ 错误:' 。 curl_error($ch);我收到错误#7,无法连接到主机。但是,我们的管理员告诉我所有端口都是开放的,因此没有应用防火墙
      • 如果您使用true 进行退货转帐,请更新您的代码。此外,将其添加到您的 curl curl_setopt($ch, CURLOPT_VERBOSE, true); 中,它将生成一些输出。向我展示该输出。
      • 您好,return-transfer 设置为 true,我已添加 curl_setopt($ch, CURLOPT_VERBOSE, true);。我用过print CURLOPT_VERBOSE;。我得到的值为 41。我现在正在检查该值的含义
      • 我试图调用的 URL 发布在 1337 端口上。我想知道这是否是问题的根源?也许这应该设置在 80 端口?
      猜你喜欢
      • 2013-09-08
      • 1970-01-01
      • 1970-01-01
      • 2015-03-27
      • 2012-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-09
      相关资源
      最近更新 更多