未使用PHP cURL设置授权标头


Authorization header is not set with PHP cURL

我正在尝试使用cURL从PHP制作一个API-call。

这是我的代码:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost/api/");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(array('sql' => $sql)));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: MY-API-KEY'));
$response = curl_exec($ch);
curl_close($ch);

似乎没有设置Authorization标头。我试过在谷歌上搜索,有人说标题识别不正确。有人能帮忙吗?我的代码在不需要授权的情况下适用于API调用。

更新:通过命令行工具curl:调用命令

curl -H 'Authorization: MY-API-KEY'...

一切正常。

我从PHP cURL得到的反馈是"拒绝访问"。

因为它看起来构造不正确:

客户端:

当用户代理想要发送服务器身份验证凭据时,它可以使用Authorization标头。

Authorization标头构造如下:

用户名和密码组合成字符串"Username:password"生成的字符串随后使用Base64的RFC2045-MIME变体进行编码,但不限于76个字符/行授权方法和一个空格,即"Basic",然后放在编码字符串之前。例如,如果用户代理使用"Aladdin"作为用户名,使用"open芝麻"作为密码,则标头的格式如下:

授权:基本QWxhZGRpbjpvcGVuIHNlc2FtZQ==