/**
* 腾讯云PHP计算COS签名
* 2021-12-23 10:59:27
* @param $uri
* @return string
*/
public static function signCos($uri)
{
//$SecretId = "AKIDtd8NL2mqa4JK8jpBdTfkZ7Sj3slMkyfwXs";
//$SecretKey = "JK9h383vSs7IL85nMyMSKmzziBU3jhOt7c";
$SecretId = env('COSV5_SECRET_ID');
$SecretKey = env('COSV5_SECRET_KEY');
$host = env('COSV5_CDN') ?? "https://oa-123024434702.cos.ap-guangzhou.myqcloud.com";
#得到 KeyTime
$StartTimestamp = time();
$EndTimestamp = strtotime("+30 minute");
$KeyTime = "$StartTimestamp;$EndTimestamp";
#得到 signKey
$signKey = hash_hmac('sha1', $KeyTime, $SecretKey);
#得到 httpString
$httpMethod = 'get';
$httpUri = $uri;//请求路径文件
$httpParameters = '';
$headerString = '';
$httpString = "$httpMethod\n$httpUri\n$httpParameters\n$headerString\n";
#得到 StringToSign
$sha1StringToSign = sha1($httpString);
$stringToSign = "sha1\n$KeyTime\n$sha1StringToSign\n";
#得到 signature
$signature = hash_hmac('sha1', $stringToSign, $signKey);
#拼凑 URl
$cos_url = $host . $httpUri . "?q-sign-algorithm=sha1&q-ak=$SecretId&q-sign-time=$KeyTime&q-key-time=$KeyTime&q-header-list=&q-url-param-list=&q-signature=$signature";
return $cos_url;
}
http访问服务器资源对象,实现签名验证访问,使用腾讯云对象存储(Cloud Object Storage,COS)时,可通过 RESTful API 对 COS 发起 HTTP 匿名请求或 HTTP 签名请求,对于签名请求,COS 服务器端将会进行对请求发起者的身份验证
腾讯云COS签名访问
简介
使用腾讯云对象存储(Cloud Object Storage,COS)时,可通过 RESTful API 对 COS 发起 HTTP 匿名请求或 HTTP 签名请求,对于签名请求,COS 服务器端将会进行对请求发起者的身份验证。
匿名请求:HTTP 请求不携带任何身份标识和鉴权信息,通过 RESTful API 进行 HTTP 请求操作。 签名请求:HTTP 请求时携带签名,COS 服务器端收到消息后,进行身份验证,验证成功则可接受并执行请求,否则将会返回错误信息并丢弃此请求。 COS 基于密钥 HMAC(Hash Message Authentication Code)的自定义方案进行身份验证。
?
?
?
?
q-sign-algorithm=sha1
&q-ak=SecretId
&q-sign-time=KeyTime
&q-key-time=KeyTime
&q-header-list=HeaderList
&q-url-param-list=UrlParamList
&q-signature=Signature
?
|