@@ -17,104 +17,105 @@ var util = {
17
17
}
18
18
} ;
19
19
20
- function camSafeUrlEncode ( str ) {
20
+ // 对更多字符编码的 url encode 格式
21
+ var camSafeUrlEncode = function ( str ) {
21
22
return encodeURIComponent ( str )
22
23
. replace ( / ! / g, '%21' )
23
24
. replace ( / ' / g, '%27' )
24
25
. replace ( / \( / g, '%28' )
25
26
. replace ( / \) / g, '%29' )
26
27
. replace ( / \* / g, '%2A' ) ;
27
- }
28
+ } ;
28
29
29
- var cos = new COS ( {
30
- getAuthorization : function ( options , callback ) {
31
-
32
-
33
- // 方法一、后端通过获取临时密钥给到前端,前端计算签名
34
- // var url = 'http://127.0.0.1:3000/sts';
35
- var url = '../server/sts.php' ;
36
- var xhr = new XMLHttpRequest ( ) ;
37
- xhr . open ( 'GET' , url , true ) ;
38
- xhr . onload = function ( e ) {
39
- try {
40
- var data = JSON . parse ( e . target . responseText ) ;
41
- var credentials = data . credentials ;
42
- } catch ( e ) {
43
- }
44
- callback ( {
45
- TmpSecretId : credentials . tmpSecretId ,
46
- TmpSecretKey : credentials . tmpSecretKey ,
47
- XCosSecurityToken : credentials . sessionToken ,
48
- ExpiredTime : data . expiredTime ,
49
- } ) ;
50
- } ;
51
- xhr . send ( ) ;
52
-
53
-
54
- // // 方法二、【细粒度控制权限】后端通过获取临时密钥给到前端,前端只有相同请求才重用临时密钥,后端可以通过 Scope 细粒度控制权限
55
- // var url = 'http://127.0.0.1:3000/sts-scope';
56
- // var xhr = new XMLHttpRequest();
57
- // xhr.open('POST', url, true);
58
- // xhr.setRequestHeader('Content-Type', 'application/json');
59
- // xhr.onload = function (e) {
60
- // try {
61
- // var data = JSON.parse(e.target.responseText);
62
- // var credentials = data.credentials;
63
- // } catch (e) {
64
- // }
65
- // callback({
66
- // TmpSecretId: credentials.tmpSecretId,
67
- // TmpSecretKey: credentials.tmpSecretKey,
68
- // XCosSecurityToken: credentials.sessionToken,
69
- // ExpiredTime: data.expiredTime,
70
- // ScopeLimit: true, // 设为 true 可限制密钥只在相同请求可重用,默认不限制一直可重用,细粒度控制权限需要设为 true
71
- // });
72
- // };
73
- // xhr.send(JSON.stringify(options.Scope));
74
-
75
-
76
- // // 方法三、后端使用固定密钥计算签名,返回给前端,auth.php,注意:这种有安全风险,后端需要通过 method、pathname 控制好权限,比如不允许 put / 等,这里暂不提供
77
- // var method = (options.Method || 'get').toLowerCase();
78
- // var key = options.Key || '';
79
- // var query = options.Query || {};
80
- // var headers = options.Headers || {};
81
- // var pathname = key.indexOf('/') === 0 ? key : '/' + key;
82
- // // var url = 'http://127.0.0.1:3000/auth';
83
- // var url = '../server/auth.php';
84
- // var xhr = new XMLHttpRequest();
85
- // var data = {
86
- // method: method,
87
- // pathname: pathname,
88
- // query: query,
89
- // headers: headers,
90
- // };
91
- // xhr.open('POST', url, true);
92
- // xhr.setRequestHeader('content-type', 'application/json');
93
- // xhr.onload = function (e) {
94
- // callback({
95
- // Authorization: e.target.responseText,
96
- // // XCosSecurityToken: sessionToken, // 如果使用临时密钥,需要传 sessionToken
97
- // });
98
- // };
99
- // xhr.send(JSON.stringify(data));
100
-
101
-
102
- // // 方法四、前端使用固定密钥计算签名(适用于前端调试)
103
- // var authorization = COS.getAuthorization({
104
- // SecretId: 'AKIDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
105
- // SecretKey: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
106
- // Method: options.Method,
107
- // Key: options.Key,
108
- // Query: options.Query,
109
- // Headers: options.Headers,
110
- // Expires: 60,
111
- // });
112
- // callback({
113
- // Authorization: e.target.responseText,
114
- // // XCosSecurityToken: credentials.sessionToken, // 如果使用临时密钥,需要传 XCosSecurityToken
115
- // });
30
+ var getAuthorization = function ( options , callback ) {
116
31
117
- }
32
+ // 方法一、后端通过获取临时密钥给到前端,前端计算签名
33
+ // var url = 'http://127.0.0.1:3000/sts';
34
+ var url = '../server/sts.php' ;
35
+ var xhr = new XMLHttpRequest ( ) ;
36
+ xhr . open ( 'GET' , url , true ) ;
37
+ xhr . onload = function ( e ) {
38
+ try {
39
+ var data = JSON . parse ( e . target . responseText ) ;
40
+ var credentials = data . credentials ;
41
+ } catch ( e ) {
42
+ }
43
+ callback ( {
44
+ TmpSecretId : credentials . tmpSecretId ,
45
+ TmpSecretKey : credentials . tmpSecretKey ,
46
+ XCosSecurityToken : credentials . sessionToken ,
47
+ ExpiredTime : data . expiredTime ,
48
+ } ) ;
49
+ } ;
50
+ xhr . send ( ) ;
51
+
52
+
53
+ // // 方法二、【细粒度控制权限】后端通过获取临时密钥给到前端,前端只有相同请求才重用临时密钥,后端可以通过 Scope 细粒度控制权限
54
+ // var url = 'http://127.0.0.1:3000/sts-scope';
55
+ // var xhr = new XMLHttpRequest();
56
+ // xhr.open('POST', url, true);
57
+ // xhr.setRequestHeader('Content-Type', 'application/json');
58
+ // xhr.onload = function (e) {
59
+ // try {
60
+ // var data = JSON.parse(e.target.responseText);
61
+ // var credentials = data.credentials;
62
+ // } catch (e) {
63
+ // }
64
+ // callback({
65
+ // TmpSecretId: credentials.tmpSecretId,
66
+ // TmpSecretKey: credentials.tmpSecretKey,
67
+ // XCosSecurityToken: credentials.sessionToken,
68
+ // ExpiredTime: data.expiredTime,
69
+ // ScopeLimit: true, // 设为 true 可限制密钥只在相同请求可重用,默认不限制一直可重用,细粒度控制权限需要设为 true
70
+ // });
71
+ // };
72
+ // xhr.send(JSON.stringify(options.Scope));
73
+
74
+
75
+ // // 方法三、后端使用固定密钥计算签名,返回给前端,auth.php,注意:这种有安全风险,后端需要通过 method、pathname 控制好权限,比如不允许 put / 等,这里暂不提供
76
+ // var method = (options.Method || 'get').toLowerCase();
77
+ // var query = options.Query || {};
78
+ // var headers = options.Headers || {};
79
+ // var pathname = options.Pathname || '/';
80
+ // // var url = 'http://127.0.0.1:3000/auth';
81
+ // var url = '../server/auth.php';
82
+ // var xhr = new XMLHttpRequest();
83
+ // var data = {
84
+ // method: method,
85
+ // pathname: pathname,
86
+ // query: query,
87
+ // headers: headers,
88
+ // };
89
+ // xhr.open('POST', url, true);
90
+ // xhr.setRequestHeader('content-type', 'application/json');
91
+ // xhr.onload = function (e) {
92
+ // callback({
93
+ // Authorization: e.target.responseText,
94
+ // // XCosSecurityToken: sessionToken, // 如果使用临时密钥,需要传 sessionToken
95
+ // });
96
+ // };
97
+ // xhr.send(JSON.stringify(data));
98
+
99
+
100
+ // // 方法四、前端使用固定密钥计算签名(适用于前端调试)
101
+ // var authorization = COS.getAuthorization({
102
+ // SecretId: 'AKIDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
103
+ // SecretKey: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
104
+ // Method: options.Method,
105
+ // Key: options.Key,
106
+ // Query: options.Query,
107
+ // Headers: options.Headers,
108
+ // Expires: 900,
109
+ // });
110
+ // callback({
111
+ // Authorization: e.target.responseText,
112
+ // // XCosSecurityToken: credentials.sessionToken, // 如果使用临时密钥,需要传 XCosSecurityToken
113
+ // });
114
+
115
+ } ;
116
+
117
+ var cos = new COS ( {
118
+ getAuthorization : getAuthorization
118
119
} ) ;
119
120
120
121
var TaskId ;
@@ -165,7 +166,7 @@ function getObjectUrl() {
165
166
function getAuth ( ) {
166
167
var key = '1.png' ;
167
168
// 这里不推荐自己拼接,推荐使用 getObjectUrl 获取 url
168
- cos . options . getAuthorization ( {
169
+ getAuthorization ( {
169
170
Method : 'get' ,
170
171
Key : key
171
172
} , function ( AuthData ) {
@@ -554,8 +555,8 @@ function deleteBucketReplication() {
554
555
555
556
function deleteBucket ( ) {
556
557
cos . deleteBucket ( {
557
- Bucket : 'testnew-' + config . Bucket . substr ( config . Bucket . lastIndexOf ( '-' ) + 1 ) ,
558
- Region : 'ap-guangzhou'
558
+ Bucket : config . Bucket ,
559
+ Region : config . Region ,
559
560
} , function ( err , data ) {
560
561
logger . log ( err || data ) ;
561
562
} ) ;
0 commit comments