PHP cURL 格式错误的授权标头 REST API 基本授权



我尝试使用 curl Basic Auth 向我的供应商 API 发出 HTTP 请求,如下所示:

//Server url
$url = "https://api.example.com/store/products?status=all&offset=0&limit=50";
$apiKey = 'xxxxxxx'; // apikey
$headers = array(
     'Authorization: Basic '.$apiKey
);
// Send to Server
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, 30); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// Get response
$response = curl_exec($ch);
// Encode : decode returns string error so use encode
echo $result = json_encode($response);

使用此代码,我得到错误:

"{\">

代码":400,\"结果":\"格式错误的授权 标头。\",\"错误\":{\"原因":\"错误请求",\"消息\":\"格式不正确 授权标头。\"}}">

我到处寻找解决方案。所有答案都建议添加用户名和密码,这对于我的供应商 API 不是必需的,只有 API 密钥和标头基本身份验证。我做错了什么?

在HTTP Basic Auth中,凭据应该是base64编码的,你是base64编码的密钥吗?

此外,在http basic身份验证中,用户名和密码由:分隔,您的API密钥应该作为用户名还是密码? 您发送它是为了什么,您是作为用户名发送还是作为密码发送?(如果您的 API 密钥在:之前,那么您将其作为用户名发送,如果您的密钥在:之后,那么您将其作为密码发送(,请尝试切换它们,然后它有效吗?

你说的是 HTTP 基本身份验证,但如果 API 文档没有明确说明 API 密钥是作为用户名还是密码,我不相信他们真的在使用http basic auth

无论如何,HTTP 基本身份验证规范可以在这里找到:https://www.rfc-editor.org/rfc/rfc7617

最新更新