不多哔哔直接上代码(有关获取harbor库的)
没有证书,可以使使用-k来代替–cacert ca.crt
curl命令获取token
curl -iL -X GET -u admin:Har** https://192.0.0.0/service/token?account=admin\&service=harbor-registry\&scope=registry:catalog:* --cacert ca.crt
根据token获取镜像库
// An highlighted block
curl -iL -X GET -H "Content-Type: application/json" -H "Authorization: Bearer LA7yfEdUBYD3bDhLM" http://192.0.0.0/v2/_catalog --cacert ca.crt
下面是php的代码
定义一个curl function。如果使用框架,可以定义成方法
function httpRequest($sUrl, $aHeader){
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
// curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_URL, $sUrl);
curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$sResult = curl_exec($ch);
$sError=curl_error($ch);
if($sError){
die($sError);
}
curl_close($ch);
return $sResult;
}
public function getIma($sUrl, $aHeader)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_URL, $sUrl);
curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$sResult = curl_exec($ch);
$sError=curl_error($ch);
if($sError){
die($sError);
}
curl_close($ch);
return $sResult;
}
$sUrl = 'https://116.85.31.12/v2/_catalog';
//header数据
$token = 'eysadasdasdasda(这里定义获取的token值)';
$aHeader = array('authorization: bearer '.$token.' ');
$sResult = httpRequest($sUrl, $aHeader);
//显示返回数据
var_dump($sResult);
exit;
Basic相当于脚本命令中的-u。我的主要问题就卡在了这里
$token = 'https://192.0.0.0/service/token?account=admin&service=harbor-registry&scope=registry:catalog:*';
$aHeader = $this->getIma($token,array('authorization: Basic '.base64_encode($this->username.':'.$this->password)));
$d = json_decode($aHeader,true);
$tokenNum = array('authorization:bearer '.$d['token']);