【发布时间】:2020-12-08 23:53:29
【问题描述】:
这可能看起来很傻,但我正在尝试从 API (WHMCS) 获取一些数据。在文档中,他们有这样的代码:
// Call the API
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $whmcsUrl . 'includes/api.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postfields));
$response = curl_exec($ch);
if (curl_error($ch)) {
die('Unable to connect: ' . curl_errno($ch) . ' - ' . curl_error($ch));
}
curl_close($ch);
// Decode response
$jsonData = json_decode($response, true);
// Dump array structure for inspection
var_dump($jsonData);
我使用 axios 在 nodejs 中编写了代码,目的是做同样的事情:
axios.get(whmcsUrl + `includes/api.php?accesskey=${apiAccessKey}`, postFields)
.then(res => console.log(res))
.catch(err => console.log(err))
对 PHP 或 Node 没有深入的了解,请帮助!我在节点中执行此请求时收到403 Forbidden?我做错了什么。
更新:我现在不是传递对象 (postFields),而是在 url 本身中传递用户名或密码之类的东西:
axios.post(whmcsUrl + `includes/api.php?action=${apiAction}&username=${apiIdentifier}&password=${apiSecret}&accesskey=${apiAccessKey}&responsetype=json`)
.then(res => console.log(res))
.catch(err => console.log(err))
它仍然给我403 Forbidden 错误。
【问题讨论】:
-
您是在进行 GET 还是 POST?对于 axios,您正在执行 GET,但 PHP 您正在执行 POST
-
@AndrewNolan 我在 get 和 post 调用中都遇到了同样的错误