来自我的网络服务器的CURL调用不起作用,但是它可以从localhhost和ajax调用工作吗?

时间:2018-01-25 10:41:37

标签: php jquery ajax rest curl

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_FAILONERROR, true);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_URL, 'http://xx.xxx.xxx.xxx:49000/xxxx/Execute/xxxxx.B2B_xxx/xxxx111?offset=1&limit=2');
$result = curl_exec($ch);
if(curl_error($ch))
  {
    echo 'error:' .curl_errno($ch)."--".curl_error($ch);
  }

curl_close($ch);

上面的代码通过我的localhost / wamp工作 但是,如果我将其上传到我的网络服务器(linux),我会收到错误:7 - 无法连接到主机

但如果我从localhost或我的网络服务器进行ajax调用它可以工作(下面的代码)

 $.ajax({                                
    url: "https://cors-anywhere.herokuapp.com/http://xx.xxx.xxx.xxx:49000/xxxx/Execute/xxxxx.B2B_xxx/xxxx111?offset=1&limit=2",
    dataType: 'json',
    success: function(data) {
      alert("Loading api success");
      console.log(data);
    },
    error: function() {
      alert("error");
    }
  }); 

注意额外的 https://cors-anywhere.herokuapp.com/ - 如果这没有添加到ajax代码网址上它不起作用...如果它被添加到curl网址它仍然无法正常工作

有人可以帮我理解为什么会这样吗?一直在四处寻找尝试各种标题请求,但似乎没有工作......

1 个答案:

答案 0 :(得分:0)

您需要检查您的服务器配置,如果您有权访问ssh / terminal,请尝试运行此代码

dig cors-anywhere.herokuapp.com

如果它返回错误,则表示您需要设置服务器DNS,请尝试以下操作:

sudo nano /etc/resolv.conf

这一行:

nameserver 8.8.8.8
nameserver 8.8.4.4

然后保存ctrl + o,ctrl-x并再次使用dig进行测试以检查域解析器。

并确保您没有连接到本地IP,如192.168.xx,如果您从Linux服务器连接到本地IP,那么它将永远不会与curl一起使用,但它适用于本地或ajax,因为您在同一本地网络中