1

我正在尝试使用此代码向外部网络服务器发出 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 及其依赖项,但似乎没有什么能解决我的问题。

如果需要更多信息,请不要犹豫,在评论中问我,我会很快回复,因为我真的需要这个。

任何帮助表示赞赏。

亲切的问候马克西姆

4

0 回答 0