簡體   English   中英

PHP cURL格式錯誤的授權標頭REST API基本授權

[英]PHP cURL Malformed Authorization header REST API Basic Authorization

我嘗試使用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);

使用此代碼我收到錯誤:

“{\\”code \\“:400,\\”result \\“:\\”格式錯誤的授權標題。\\“,\\”錯誤\\“:{\\”reason \\“:\\”BadRequest \\“,\\”message \\“: “格式錯誤的授權標題。\\”}}“

我到處尋找解決方案在這里這里 所有答案都建議添加用戶名和密碼,這對我的供應商API來說是不必要的,只有Api Key和標題Basic Auth。 我究竟做錯了什么?

在HTTP Basic Auth中,憑據應該是base64編碼的,你是否對密鑰進行base64編碼?

此外,在http basic auth中,用戶名和密碼用以下內容分隔: ,您的API密鑰應該作為用戶名還是密碼? 你發送它的是什么,你是以用戶名發送還是將其作為密碼發送? (如果你的api密鑰在之前:那么你將它作為用戶名發送,如果你的密鑰發送到:然后你將它作為密碼發送),嘗試將它們切換,它是否有用呢?

並且你說的是http basic auth,但如果API文檔沒有明確說明api密鑰是否作為用戶名或密碼,我不相信他們真的在使用http basic auth ...

無論如何,HTTP Basic Auth規范可以在這里找到: https//tools.ietf.org/html/rfc7617

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM