Skip to content

Commit 1c0e9c4

Browse files
committed
fix: 优化 sts 指引
1 parent 76a7551 commit 1c0e9c4

File tree

3 files changed

+29
-227
lines changed

3 files changed

+29
-227
lines changed

README.md

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
由于签名计算放在前端会暴露 SecretId 和 SecretKey,我们把签名计算过程放在后端实现,前端通过 ajax 向后端获取签名结果,正式部署时请在后端加一层自己网站本身的权限检验。
2121

22-
这里提供 [PHP 和 NodeJS 的签名例子](https://github.com/tencentyun/cos-js-sdk-v5/blob/master/server/),其他语言,请参照对应的 [XML SDK](https://cloud.tencent.com/document/product/436/6474)
22+
这里提供 [NodeJS 的签名例子](https://github.com/tencentyun/cos-js-sdk-v5/blob/master/server/),其他语言,请参照对应的 [XML SDK](https://cloud.tencent.com/document/product/436/6474)
2323

2424
### 三、上传例子
2525

@@ -33,36 +33,50 @@
3333
<script>
3434
3535
// 存储桶名称,由bucketname-appid 组成,appid必须填入,可以在COS控制台查看存储桶名称。 https://console.cloud.tencent.com/cos5/bucket
36-
var Bucket = 'test-1250000000';
36+
const Bucket = 'test-1250000000';
3737
// 存储桶Region可以在COS控制台指定存储桶的概览页查看 https://console.cloud.tencent.com/cos5/bucket/
3838
// 关于地域的详情见 https://cloud.tencent.com/document/product/436/6224
39-
var Region = 'ap-guangzhou';
39+
const Region = 'ap-guangzhou';
4040
4141
// 初始化实例
42-
var cos = new COS({
42+
const cos = new COS({
43+
// getAuthorization 必选参数
4344
getAuthorization: function (options, callback) {
44-
var url = '../server/sts.php'; // 这里替换成您的服务接口地址
45-
var xhr = new XMLHttpRequest();
45+
// 初始化时不会调用,只有调用 cos 方法(例如 cos.putObject)时才会进入
46+
// 异步获取临时密钥
47+
// 服务端 JS 示例:https://github.com/tencentyun/cos-js-sdk-v5/blob/master/server/
48+
// 服务端其他语言参考 COS STS SDK :https://github.com/tencentyun/qcloud-cos-sts-sdk
49+
// STS 详细文档指引看:https://cloud.tencent.com/document/product/436/14048
50+
const url = 'http://example.com/server/sts'; // url 替换成您自己的后端服务
51+
const xhr = new XMLHttpRequest();
52+
let data = null;
53+
let credentials = null;
4654
xhr.open('GET', url, true);
4755
xhr.onload = function (e) {
4856
try {
49-
var data = JSON.parse(e.target.responseText);
50-
var credentials = data.credentials;
57+
data = JSON.parse(e.target.responseText);
58+
credentials = data.credentials;
5159
} catch (e) {
5260
}
53-
if (!data || !credentials) return console.error('credentials invalid');
61+
if (!data || !credentials) {
62+
return console.error('credentials invalid:\n' + JSON.stringify(data, null, 2))
63+
};
64+
// 检查credentials格式
65+
console.log(credentials);
5466
callback({
55-
TmpSecretId: credentials.tmpSecretId,
56-
TmpSecretKey: credentials.tmpSecretKey,
57-
XCosSecurityToken: credentials.sessionToken,
58-
StartTime: data.startTime, // 时间戳,单位秒,如:1580000000,建议返回服务器时间作为签名的开始时间,避免用户浏览器本地时间偏差过大导致签名错误
59-
ExpiredTime: data.expiredTime, // 时间戳,单位秒,如:1580000900
60-
});
67+
TmpSecretId: credentials.tmpSecretId,
68+
TmpSecretKey: credentials.tmpSecretKey,
69+
SecurityToken: credentials.sessionToken,
70+
// 建议返回服务器时间作为签名的开始时间,避免用户浏览器本地时间偏差过大导致签名错误
71+
StartTime: data.startTime, // 时间戳,单位秒,如:1580000000
72+
ExpiredTime: data.expiredTime, // 时间戳,单位秒,如:1580000000
73+
});
6174
};
6275
xhr.send();
6376
}
6477
});
6578
79+
6680
var taskId;
6781
6882
// 监听选文件

server/qcloud-sts-sdk.php

Lines changed: 0 additions & 171 deletions
This file was deleted.

server/sts.php

Lines changed: 0 additions & 41 deletions
This file was deleted.

0 commit comments

Comments
 (0)