跨域访问

最近更新时间:2023-05-17 10:47:32

我的收藏

简介

本文档提供关于跨域访问的 API 概览以及 SDK 示例代码。
API
操作名
操作描述
设置跨域配置
设置存储桶的跨域名访问权限
查询跨域配置
查询存储桶的跨域名访问配置信息
删除跨域配置
删除存储桶的跨域名访问配置信息

SDK API 参考

SDK 所有接口的具体参数与方法说明,请参见 SDK API

设置跨域配置

功能说明

设置指定存储桶的跨域名访问配置信息(PUT Bucket cors)。

示例代码

Objective-C
QCloudPutBucketCORSRequest* putCORS = [QCloudPutBucketCORSRequest new];
QCloudCORSConfiguration* cors = [QCloudCORSConfiguration new];

QCloudCORSRule* rule = [QCloudCORSRule new];

// 配置规则 ID
rule.identifier = @"rule1";

// 跨域请求可以使用的 HTTP 请求头部,支持通配符 *
rule.allowedHeader = @[@"origin",@"host",@"accept",
@"content-type",@"authorization"];
rule.exposeHeader = @"ETag";

// 跨域请求允许的 HTTP 操作,例如:GET,PUT,HEAD,POST,DELETE
rule.allowedMethod = @[@"GET",@"PUT",@"POST", @"DELETE", @"HEAD"];

// 跨域请求得到结果的有效期
rule.maxAgeSeconds = 3600;

// 允许的访问来源,支持通配符 *,格式为:协议://域名[:端口]
rule.allowedOrigin = @"http://cloud.tencent.com";

cors.rules = @[rule];
putCORS.corsConfiguration = cors;

// 存储桶名称,由 BucketName-Appid 组成,可以在 COS 控制台查看 https://console.cloud.tencent.com/cos5/bucket
putCORS.bucket = @"examplebucket-1250000000";

[putCORS setFinishBlock:^(id outputObject, NSError *error) {
// 可以从 outputObject 中获取服务器返回的 header 信息
NSDictionary * result = (NSDictionary *)outputObject;
}];

[[QCloudCOSXMLService defaultCOSXML] PutBucketCORS:putCORS];
说明
更多完整示例,请前往 GitHub 查看。
Swift
let putBucketCorsReq = QCloudPutBucketCORSRequest.init();

let corsConfig = QCloudCORSConfiguration.init();

let rule = QCloudCORSRule.init();

// 配置规则的 ID
rule.identifier = "rule1";

// 跨域请求可以使用的 HTTP 请求头部,支持通配符 *
rule.allowedHeader = ["origin","host","accept","content-type","authorization"];
rule.exposeHeader = "Etag";

// 跨域请求允许的 HTTP 操作,例如:GET,PUT,HEAD,POST,DELETE
rule.allowedMethod = ["GET","PUT","POST", "DELETE", "HEAD"];

// 跨域请求得到结果的有效期
rule.maxAgeSeconds = 3600;

// 允许的访问来源,支持通配符 *,格式为:协议://域名[:端口]
rule.allowedOrigin = "*";

corsConfig.rules = [rule];
putBucketCorsReq.corsConfiguration = corsConfig;

// 存储桶名称,由 BucketName-Appid 组成,可以在 COS 控制台查看 https://console.cloud.tencent.com/cos5/bucket
putBucketCorsReq.bucket = "examplebucket-1250000000";
putBucketCorsReq.finishBlock = {(result,error) in
if let result = result {
// 可以从 result 中获取服务器返回的 header 信息
} else {
print(error!)
}
}
QCloudCOSXMLService.defaultCOSXML().putBucketCORS(putBucketCorsReq);
说明
更多完整示例,请前往 GitHub 查看。

查询跨域配置

功能说明

查询指定存储桶的跨域名访问配置信息(GET Bucket cors)。

示例代码

Objective-C
QCloudGetBucketCORSRequest* corsReqeust = [QCloudGetBucketCORSRequest new];

// 存储桶名称,由 BucketName-Appid 组成,可以在 COS 控制台查看 https://console.cloud.tencent.com/cos5/bucket
corsReqeust.bucket = @"examplebucket-1250000000";

[corsReqeust setFinishBlock:^(QCloudCORSConfiguration * _Nonnull result,
NSError * _Nonnull error) {
// 跨域规则列表
NSArray<QCloudCORSRule*> *rules = result.rules;

}];

[[QCloudCOSXMLService defaultCOSXML] GetBucketCORS:corsReqeust];
说明
更多完整示例,请前往 GitHub 查看。
Swift
let getBucketCorsRes = QCloudGetBucketCORSRequest.init();

// 存储桶名称,由 BucketName-Appid 组成,可以在 COS 控制台查看 https://console.cloud.tencent.com/cos5/bucket
getBucketCorsRes.bucket = "examplebucket-1250000000";
getBucketCorsRes.setFinish { (corsConfig, error) in
if let corsConfig = corsConfig {
// 跨域规则列表
let rules = corsConfig.rules
} else {
print(error!)
}
}
QCloudCOSXMLService.defaultCOSXML().getBucketCORS(getBucketCorsRes);
说明
更多完整示例,请前往 GitHub 查看。

删除跨域配置

功能说明

删除指定存储桶的跨域名访问配置(DELETE Bucket cors)。

示例代码

Objective-C
QCloudDeleteBucketCORSRequest* deleteCORS = [QCloudDeleteBucketCORSRequest new];

// 存储桶名称,由 BucketName-Appid 组成,可以在 COS 控制台查看 https://console.cloud.tencent.com/cos5/bucket
deleteCORS.bucket = @"examplebucket-1250000000";

[deleteCORS setFinishBlock:^(id outputObject, NSError *error) {
// 可以从 outputObject 中获取服务器返回的 header 信息
NSDictionary* info = (NSDictionary *) outputObject;
}];
[[QCloudCOSXMLService defaultCOSXML] DeleteBucketCORS:deleteCORS];
说明
更多完整示例,请前往 GitHub 查看。
Swift
let deleteBucketCorsRequest = QCloudDeleteBucketCORSRequest.init();

// 存储桶名称,由 BucketName-Appid 组成,可以在 COS 控制台查看 https://console.cloud.tencent.com/cos5/bucket
deleteBucketCorsRequest.bucket = "examplebucket-1250000000";

deleteBucketCorsRequest.finishBlock = {(result,error) in
if let result = result {
// 可以从 result 中获取服务器返回的 header 信息
} else {
print(error!)
}
}
QCloudCOSXMLService.defaultCOSXML().deleteBucketCORS(deleteBucketCorsRequest);
说明
更多完整示例,请前往 GitHub 查看。