我正在使用以下代码生成一个签名的Cloudfront URL。
$cloudfront = new CloudFrontClient([
'version' => '2014-11-06',
'credentials' => [
'key'=>'MyKey',
'secret'=>'MySecret',
],
'region' => 'us-east-1',
]);
$url = $cloudfront->getSignedUrl([
'url' => 'https://cloudfronturl/path/to/resource',
'expires' => time() + 3600,
'private_key' => '/path/to/key.pem',
'key_pair_id' => 'keyPairID',
]);
该代码生成一个看起来像这样的URL
https://cloudfronturl/path/to/resource?Expires=1534349477&Signature=Gppjq5ZujLaVl0MAz3xJo0whxOYb0ZbgJX9AG9QN-F-mGrwZghJiHoTlietlfm2uKRgWcGuRS14pzcggkgeL-jlOlQl3s66QCJ0ETjKpbpyMNyeXlHMo2cBYDLaB-azBxuQHbzC17SkYHAgYGIpDHvlm5BILkSnpprUNoTSxZlQjXrK6uqFLDFbWEcVJEXhHpmZqtrSLoJRfKwxPk~rGOWn1SOWDBhowMFlxBzmgxGHatUbFkq~EGo0FZpKzdBLu449Uq2WJMIb~V7PCRqc9D2A6cuDHxyYuAd5NrtMkn2qUyQ8-N12bw7JSl6aO50w7~wAJMnVOH1k~7n~Hj~OfVQ__&Key-Pair-Id=keyPairID
这已经工作了一年多了。今天,我收到警告,以这种方式生成的链接不再按预期工作。现在,链接会引发此错误:
Only one auth mechanism allowed; only the X-Amz-Algorithm query parameter, Signature query string parameter or the Authorization header should be specified
整个上午,我一直在想弄清楚为什么这么说。据我所知,我没有设置X-Amz-Algorithm
参数,并且我所做的所有检查都没有显示任何Authorization
标头。