前端vue使用cos临时密钥的方法上传出现访问受限
流程:后台创造一个临时密钥传给前端在前端vue中通过npm安装cos的依赖npm i cos-js-sdk-v5 --save然后在需要用的页面引用cosvar COS = require('cos-js-sdk-v5');我用的是后台传的临时密钥,但是阅读文档使用例子<input id="file-selector" type="file"><script s...
·
流程:后台创造一个临时密钥传给前端
在前端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,
});
这种通过测试发现没有问题!!
更多推荐
已为社区贡献2条内容
所有评论(0)