我正在尝试将一些数据发送到由Web开发机构构建的自定义构建的API。 api非常简单,我需要做的就是使用授权基本标头授权自己并提交一个只有JSON数据的有效负载。
问题是,每次使用cURL发送POST请求时,API都会响应403。我的代码有什么办法导致这种情况吗?或者它是由API / API服务器引起的错误?无论JSON有效负载是否正确格式化,它仍应以200响应返回。
请求非常简单 -
<?php
//I've removed the actual username and password
$headers = array(
'Content-Type: application/json',
'Authorization: Basic '.base64_encode('username:password'));
$empty_array = array();
//Create empty json as an example
$json = json_encode($empty_array);
$url = "https://website.com/import";
//start cURL
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_POSTFIELDS,
$json);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
$output = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
如果我取出POST数据,那么它将返回404响应。如果没有提交到URL的POST数据,这是正确的行为。 (如果我通过浏览器导航到网址,我会得到404)。所以我有一个理论认为服务器必须对接受POST数据有某种限制。
我的代码看起来是正确的还是我错过了一些明显的东西?我不能排除这是由于我无法访问API的代码/服务器而导致的问题,因为这是我无法控制的。