具有基本身份验证和承载身份验证标头的cURL

时间:2019-11-19 10:35:04

标签: php curl http-headers .htpasswd

我正在使用PHP cURL来测试位于受Apache HTPASSWD保护的开发站点上的API。

$jwt = // a standard JWT token        

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://dev.mysite.com/api');
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, 'myuser:mypass');
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Authorization: Bearer '.$jwt));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($curl);

但是,似乎设置HTTPHEADER会覆盖HTPASSWD所需的基本身份验证,因为调用会返回401 UNAUTHORIZED。

我也尝试过(没有成功):

curl_setopt($curl, CURLOPT_URL, 'https://myuser:mypass@dev.mysite.com/api');

是否可以使用cURL在API调用中包括这两个标头值?还是在这里我做错了什么?

1 个答案:

答案 0 :(得分:1)

https://tools.ietf.org/html/rfc6750说,您可以将Bearer用作

  

表单编码的正文参数:授权:Bearer mytoken123

     

URI查询参数:a​​ccess_token = mytoken123

因此,一种选择是将令牌设置为查询参数。