$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网址它仍然无法正常工作
有人可以帮我理解为什么会这样吗?一直在四处寻找尝试各种标题请求,但似乎没有工作......
答案 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,因为您在同一本地网络中