PHP天生腾讯云COS接口必要的哀求署名
// 计较署名中的 signature 部门 为了测试,该要领参数应该是多过必要了,前六个参数是已经给出的,是来自用户的,因此直接赋值即可获得下边字符串:
$header_list 这个值要切合 $tmpArray = array(); foreach( $headers as $key=>$value){ array_push($tmpArray,strtolower($key)); } sort($tmpArray); return implode(';',$tmpArray); } catch(Exception $error){ return false; } } $url-param-list 上面讲过,这个值是HTTP哀求参数,对付 PUT 要领没有 ? 参数,天然值为空,以是代码中“偷懒”直接给了空字符串。 Signature 的计较和必要警惕的处所官方已经给出了完备的算法,PHP 乃至尚有写好的代码,应该是很幸福了(但!因为看官方文档看的头晕照旧踩了坑,随后一路声名),先看一下 signature 的“名目”:
再看一下 Signature 的完备算法:
$signTime:很简朴,起止时刻构成的字符串,从上文拿来直接用 $signKey:HMAC-SHA1 算法直接计较即可 $httpString:四个部门构成必要分隔说1、$httpMethod:HTTP哀求要领,小写,好比 put、get 2、$httpUri:HTTP哀求的URI部门,从“/”假造根开始,如 /testfile 声名在存储桶根目次下建设一个叫 testfile 的文件,/image/face1.jpg 声名在根目次/image目次下成立一个叫 face1.jpg 的文件,至于是不是图片文件,不管 3、$httpParameters:这是第一个必要警惕的处所。由HTTP原始哀求参数构成,即哀求 URI 中 ? 后头的部门,本例挪用的是 PUT Object 接口,因此为空。假如不为空,必要把哀求参数每一项的 key 和 value 均转换小写,多对 key=value 按字典排序并以 & 相毗连 4、$headerString:这是第二个必要警惕的处所,由 HTTP 原始哀求头构成,按照哀求头,选择所有或部门哀求头,把每项的key都转换为小写,把value都举办URLEncode转换,每项名目都改为key=value,然后凭证key举办字典排序,最后把它们用毗连符 & 构成字符串。这是我清算的逻辑,代码如下:try{ $tmpArray = array(); foreach($headers as $key => $value){ $tmpKey = strtolower($key); $tmpArray[$tmpKey] = urlencode($value); } ksort($tmpArray); $headerArray = array(); foreach( $tmpArray as $key => $value){ array_push($headerArray,"$key=$value"); } return implode('&',$headerArray); } catch(Exception $error){ return false; } } 为什么要警惕? HTTP原始哀求头和哀求参数用在了四个处所,别离是哀求署名里的 q-header-list 和 Signature 里的 HttpHeaders——两者都用到了HTTP原始哀求头;哀求署名里的 q-url-param-list 和 Signature 里的 HttpParameters——两者都用到了HTTP哀求参数。必然要担保HTTP哀求头和哀求参数所选用的数目和工具同等
输出功效和校验(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |