cos.getObjectUrl无法获取预签名URL
参考官方文档《获取请求预签名 URL》,写出以下代码片段来获取URL,但是一直获取的就是一个拼出的不带签名的链接。
var url = cos.getObjectUrl({
Bucket: 'examplebucket-1250000000', /* 填入您自己的存储桶,必须字段 */
Region: 'COS_REGION', /* 存储桶所在地域,例如ap-beijing,必须字段 */
Key: '1.jpg', /* 存储在桶里的对象键(例如1.jpg,a/b/test.txt),必须字段 */
});
执行结果
https://examplebucket-1250000000.cos.ap-shanghai.myqcloud.com/dfsdfsd
期望结果
https://examplebucket-1250000000.cos.ap-shanghai.myqcloud.com/dfsdfsd?q-sign-algorithm=sha1&q-ak=AKIDZwVmUDGxOmlYxydVjz051eU1IbAfZtYfxfrKudgDliKFJO6infDw4bqndvutKmF_&q-sign-time=1645942939;1645946539&q-key-time=1645942939;1645946539&q-header-list=&q-url-param-list=&q
解决方案
不能取cos.getObjectUrl
返回值,要用回调。返回值永远是那个不带签名的url,但如果使用固定签名来获取,就会成功。这里设计不太合理。还不如直接返回null 。
cos.getObjectUrl({
Bucket: 'examplebucket-1250000000', /* 填入您自己的存储桶,必须字段 */
Region: 'COS_REGION', /* 存储桶所在地域,例如ap-beijing,必须字段 */
Key: '1.jpg', /* 存储在桶里的对象键(例如1.jpg,a/b/test.txt),必须字段 */
Sign: false
}, function (err, data) {
console.log(err || data.Url);
});
另外阿里云的《微信小程序直传实践》封装成npm包会更方便一些。