我正在尝试使用此代码向外部网络服务器发出 REST 请求
<?php
$user = 'USER';
$pass = 'PASS';
$data = "MYDATA"
$ch = curl_init('URL');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data))
);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);
if(!($res = curl_exec($ch))) {
echo('[cURL Failure] ' . curl_error($ch));
}
curl_close($ch);
echo($res);
现在这是一个 CURL 请求,但是我尝试了不同的方法来测试我的结果,它们都给了我从网络服务器获得的 403 禁止错误响应,但是当我在任何其他网络服务器(本地主机)上运行它时,我确实得到了 200 响应, webserver2, ...) 因此,我认为我的网络服务器有问题,它可能不允许/缓存我提供的 post 参数,因为有时它会返回 200 响应,但大多数时候它会返回 403。
这是我得到的回应:
HTTP/1.1 403 Forbidden Accept-Ranges: bytes Content-Type: application/json; charset=UTF-8 Date: Sat, 26 Oct 2013 13:56:37 GMT Server: Restlet-Framework/2.1.3 Vary: Accept-Charset, Accept-Encoding, Accept-Language, Accept Content-Length: 77 Connection: keep-alive {"error":"ForbiddenOperationException","errorMessage":"Invalid credentials."}
它说凭据无效,但是我提供了正确的凭据,并且我可以确认它们,因为它正在其他服务器上运行。
由于这是我用于客户注册的脚本的关键部分,我假设 post 参数有问题。
我正在运行 cpanel 并已卸载以下内容: - varnish - apachebooster
我也已经重新编译了 php 并启用了 curl 及其依赖项,但似乎没有什么能解决我的问题。
如果需要更多信息,请不要犹豫,在评论中问我,我会很快回复,因为我真的需要这个。
任何帮助表示赞赏。
亲切的问候马克西姆