跨域访问
更新时间:2026-08-04
PutBucketCors
本接口用来在指定的Bucket上设定一个跨域资源共享(CORS)的规则,如果原规则存在则覆盖原规则。
只有Bucket的所有者和被授予FULL_CONTROL权限的用户才能设置Bucket的CORS。没有权限时,返回403 Forbidden错误,错误码:AccessDenied。
相关参数参见PutBucketCors接口。
C++
1void put_bucket_cors(Client &client) {
2 BucketCorsConfiguration configuration;
3 BucketCorsRule rule;
4 rule.allowed_origins.push_back("https://www.example.com");
5 rule.allowed_methods.push_back("GET");
6 rule.allowed_methods.push_back("PUT");
7 rule.allowed_headers.push_back("Authorization");
8 rule.allowed_expose_headers.push_back("ETag");
9 rule.max_age_seconds = 3600;
10 configuration.cors_configuration.push_back(rule);
11
12 PutBucketCorsRequest request(g_bucket, configuration);
13 PutBucketCorsResponse response;
14 client.put_bucket_cors(request, &response);
15 print_common_response(response);
16}
GetBucketCors
本接口用于获取指定的Bucket当前的CORS规则。
相关参数参见GetBucketCors接口。
C++
1void get_bucket_cors(Client &client) {
2 GetBucketCorsRequest request(g_bucket);
3 GetBucketCorsResponse response;
4 client.get_bucket_cors(request, &response);
5 print_common_response(response);
6 if (response.is_ok()) {
7 const std::vector<BucketCorsRule> &rules = response.configuration().cors_configuration;
8 for (size_t i = 0; i < rules.size(); ++i) {
9 std::cout << "rule " << i << ":" << std::endl;
10 std::cout << " allowedOrigins:";
11 for (size_t j = 0; j < rules[i].allowed_origins.size(); ++j) {
12 std::cout << " " << rules[i].allowed_origins[j];
13 }
14 std::cout << std::endl;
15 std::cout << " allowedMethods:";
16 for (size_t j = 0; j < rules[i].allowed_methods.size(); ++j) {
17 std::cout << " " << rules[i].allowed_methods[j];
18 }
19 std::cout << std::endl;
20 std::cout << " allowedHeaders:";
21 for (size_t j = 0; j < rules[i].allowed_headers.size(); ++j) {
22 std::cout << " " << rules[i].allowed_headers[j];
23 }
24 std::cout << std::endl;
25 std::cout << " allowedExposeHeaders:";
26 for (size_t j = 0; j < rules[i].allowed_expose_headers.size(); ++j) {
27 std::cout << " " << rules[i].allowed_expose_headers[j];
28 }
29 std::cout << std::endl;
30 std::cout << " maxAgeSeconds: " << rules[i].max_age_seconds << std::endl;
31 }
32 }
33}
DeleteBucketCors
DeleteBucketCors用于关闭指定Bucket的CORS功能并清空所有规则。
只有Bucket的所有者和被授予FULL_CONTROL权限的用户才有权限删除CORS规则。
相关参数参见DeleteBucketCors接口。
C++
1void delete_bucket_cors(Client &client) {
2 DeleteBucketCorsRequest request(g_bucket);
3 DeleteBucketCorsResponse response;
4 client.delete_bucket_cors(request, &response);
5 print_common_response(response);
6}
评价此篇文章
