我正在尝试使用cURL从PHP进行API调用。
这是我的代码:
$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-header。我试过谷歌,有些人说没有正确识别标题。有人可以帮忙吗? 我的代码适用于没有需要授权的API调用。
更新: 通过命令行工具curl调用命令:
curl -H 'Authorization: MY-API-KEY'...
一切正常。
我对PHP cURL的反馈是“拒绝访问”。
答案 0 :(得分:1)
因为它看起来没有正确构建:
客户方:
当用户代理想要发送服务器身份验证凭据时,它可以使用授权标头。
Authorization标头的构造如下:
用户名和密码组合成一个字符串"用户名:密码" 然后使用Base64的RFC2045-MIME变体对结果字符串进行编码,但不限于76个字符/行 授权方法和空格,即" Basic"然后放在编码的字符串之前。 例如,如果用户代理使用'阿拉丁'作为用户名和'打开芝麻'作为密码,然后标题形成如下:
授权:基本QWxhZGRpbjpvcGVuIHNlc2FtZQ ==