前端vue使用cos临时密钥的方法上传出现访问受限

流程:后台创造一个临时密钥传给前端

在前端vue中通过npm安装cos的依赖

npm i cos-js-sdk-v5 --save

然后在需要用的页面引用cos

var COS = require('cos-js-sdk-v5');

我用的是后台传的临时密钥,但是阅读文档使用例子

<input id="file-selector" type="file">
<script src="dist/cos-js-sdk-v5.min.js"></script>
<script>
var Bucket = 'examplebucket-1250000000';
var Region = 'ap-beijing';

// 初始化实例
var cos = new COS({
    getAuthorization: function (options, callback) {
        // 异步获取临时密钥
        $.get('http://example.com/server/sts.php', {
            bucket: options.Bucket,
            region: options.Region,
        }, function (data) {
            var credentials = data.credentials;
            callback({
                 TmpSecretId: credentials.tmpSecretId, 
                 TmpSecretKey: credentials.tmpSecretKey, 
                 XCosSecurityToken: credentials.sessionToken, 
                 ExpiredTime: data.expiredTime
            });
        });
    }
});

// 接下来可以通过 cos 实例调用 COS 请求。
// TODO

</script>

文档中提示初始化COS对象的时候要用到getAuthorization,其实是不需要的!
在使用后台返回的临时密钥的时候
直接使用一下代码

this.cos = new COS({
              SecretId: res.ret_data.tmpSecretId,
              SecretKey: res.ret_data.tmpSecretKey,
              XCosSecurityToken: res.ret_data.sessionToken,
 });

这里直接用临时密钥来代替固定密钥,XCosSecurityToken也是必传的。

在使用getAuthorization的时候,我发现根本没进这个函数内部,并且在控制台打印出来的cos实例有如下错误:
前端错误
查找之后发现是这个函数不能使用严格模式"use strict",但是cos的js文件里又是明显使用了"use strict",感觉自相矛盾了。

总之,使用

this.cos = new COS({
              SecretId: res.ret_data.tmpSecretId,
              SecretKey: res.ret_data.tmpSecretKey,
              XCosSecurityToken: res.ret_data.sessionToken,
 });

这种通过测试发现没有问题!!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值