文档中心>对象存储>SDK 文档>iOS SDK>设置访问域名(CDN/全球加速)

设置访问域名(CDN/全球加速)

最近更新时间:2025-07-30 11:26:53

我的收藏

简介

本文档提供关于如何使用非默认域名请求 COS 服务。

SDK API 参考

SDK 所有接口的具体参数与方法说明,请参见 SDK API
注意:
设置了访问域名后,需要在 SDK 中设置 Host 不参与签名。
单次临时密钥
临时密钥回调
单次临时密钥使用方式可以直接在 request 对象中设置 shouldSignedList
Objective-C
QCloudCOSXMLUploadObjectRequest* request = [QCloudCOSXMLUploadObjectRequest new];
request.shouldSignedList = @[@"Cache-Control", @"Content-Disposition", @"Content-Encoding", @"Content-Length", @"Content-MD5", @"Content-Type", @"Expect", @"Expires", @"If-Match" , @"If-Modified-Since" , @"If-None-Match" , @"If-Unmodified-Since" , @"Origin" , @"Range" , @"transfer-encoding" ,@"Pic-Operations",@"ci-process"];
Swift
let requset:QCloudCOSXMLUploadObjectRequest = QCloudCOSXMLUploadObjectRequest<AnyObject>();
request.shouldSignedList = shouldSignedList = ["Cache-Control", "Content-Disposition", "Content-Encoding", "Content-Length", "Content-MD5", "Content-Type", "Expect", "Expires", "If-Match" , "If-Modified-Since" , "If-None-Match" , "If-Unmodified-Since" , "Origin" , "Range" , "transfer-encoding" , "Pic-Operations","ci-process"];
Objective-C
// 获取签名的方法入口,这里演示了获取临时密钥并计算签名的过程
// 您也可以自定义计算签名的过程
- (void) signatureWithFields:(QCloudSignatureFields*)fileds
request:(QCloudBizHTTPRequest*)request
urlRequest:(NSMutableURLRequest*)urlRequst
compelete:(QCloudHTTPAuthentationContinueBlock)continueBlock
{
//这里同步从后台服务器获取临时密钥,强烈建议将获取临时密钥的逻辑放在这里,最大程度上保证密钥的可用性
//...
QCloudCredential* credential = [QCloudCredential new];

// 临时密钥 SecretId
// sercret_id 替换为用户的 SecretId,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi
credential.secretID = @"SECRETID";
// 临时密钥 SecretKey
// sercret_key替换为用户的 SecretKey,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi
credential.secretKey = @"SECRETKEY";
// 临时密钥 Token
// 如果使用永久密钥不需要填入 token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048
credential.token = @"TOKEN";
/** 强烈建议返回服务器时间作为签名的开始时间, 用来避免由于用户手机本地时间偏差过大导致的签名不正确(参数 startTime 和 expiredTime 单位为秒)
*/
credential.startDate = [NSDate dateWithTimeIntervalSince1970:startTime]; // 单位是秒
credential.expirationDate = [NSDate dateWithTimeIntervalSince1970:expiredTime]];// 单位是秒

QCloudAuthentationV5Creator* creator = [[QCloudAuthentationV5Creator alloc]
initWithCredential:credential];
// SDK 中设置 Host 不参与签名。
creator.shouldSignedList = @[@"Cache-Control", @"Content-Disposition", @"Content-Encoding", @"Content-Length", @"Content-MD5", @"Content-Type", @"Expect", @"Expires", @"If-Match" , @"If-Modified-Since" , @"If-None-Match" , @"If-Unmodified-Since" , @"Origin" , @"Range" , @"transfer-encoding" ,@"Pic-Operations",@"ci-process"];
// 注意 这里不要对 urlRequst 进行 copy 以及 mutableCopy 操作
QCloudSignature *signature = [creator signatureForData:urlRequst];
continueBlock(signature, nil);
}
Swift

func signature(with fileds: QCloudSignatureFields!,
request: QCloudBizHTTPRequest!,
urlRequest urlRequst: NSMutableURLRequest!,
compelete continueBlock: QCloudHTTPAuthentationContinueBlock!) {

//这里同步从后台服务器获取临时密钥
//...

let credential = QCloudCredential.init();
// 临时密钥 SecretId
// sercret_id 替换为用户的 SecretId,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi
credential.secretID = "SECRETID";
// 临时密钥 SecretKey
// sercret_key 替换为用户的 SecretKey,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi
credential.secretKey = "SECRETKEY";
// 临时密钥 Token
// 如果使用永久密钥不需要填入 token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048
credential.token = "TOKEN";
/** 强烈建议返回服务器时间作为签名的开始时间, 用来避免由于用户手机本地时间偏差过大导致的签名不正确(参数 startTime 和 expiredTime 单位为秒)
*/
credential.startDate = Date.init(timeIntervalSince1970: TimeInterval(startTime)!) DateFormatter().date(from: "startTime");
credential.expirationDate = Date.init(timeIntervalSince1970: TimeInterval(expiredTime)!)

let creator = QCloudAuthentationV5Creator.init(credential: credential);
// SDK 中设置 Host 不参与签名。
creator.shouldSignedList = ["Cache-Control", "Content-Disposition", "Content-Encoding", "Content-Length", "Content-MD5", "Content-Type", "Expect", "Expires", "If-Match" , "If-Modified-Since" , "If-None-Match" , "If-Unmodified-Since" , "Origin" , "Range" , "transfer-encoding" , "Pic-Operations","ci-process"];
// 注意 这里不要对 urlRequst 进行 copy 以及 mutableCopy 操作
let signature = creator?.signature(forData: urlRequst);
continueBlock(signature,nil);

}

CDN 默认加速域名

关于如何开启默认加速域名请参见 开启默认 CDN 加速域名
以下代码展示了如何使用默认加速域名访问 COS 服务。

示例代码

Objective-C
QCloudCOSXMLEndPoint *endpoint = [[QCloudCOSXMLEndPoint alloc] init];
endpoint.suffix = @"file.myqcloud.com";
说明:
更多完整示例,请前往 GitHub 查看。
Swift
let endpoint = QCloudCOSXMLEndPoint();
endpoint.suffix = "file.myqcloud.com";
说明:
更多完整示例,请前往 GitHub 查看。

CDN 自定义加速域名

关于如何开启 CDN 自定义加速域名请参考 开启自定义 CDN 加速域名
以下代码展示了如何使用自定义加速域名访问 COS 服务。

示例代码

Objective-C
QCloudCOSXMLEndPoint *endpoint = [[QCloudCOSXMLEndPoint alloc] initWithLiteralURL:[NSURL URLWithString:@"exampledomain.com"]];
说明:
更多完整示例,请前往 GitHub 查看。
Swift
let endpoint = QCloudCOSXMLEndPoint.init(literalURL: NSURL.init(string: "exampledomain.com") as URL?);
说明:
更多完整示例,请前往 GitHub 查看。

自定义源站域名

关于如何设置自定义源站域名请参考 自定义源站域名
以下代码展示了如何使用自定义源站域名访问 COS 服务。

示例代码

Objective-C
NSString *customDomain = @"exampledomain.com"; // 自定义加速域名
QCloudCOSXMLEndPoint *endpoint = [[QCloudCOSXMLEndPoint alloc] initWithLiteralURL:[NSURL URLWithString:customDomain]];
说明:
更多完整示例,请前往 GitHub 查看。
Swift
let endpoint = QCloudCOSXMLEndPoint.init(literalURL: NSURL.init(string: "exampledomain.com") as URL?);
说明:
更多完整示例,请前往 GitHub 查看。

全球加速域名

关于全球加速功能请参见 全球加速功能概述
以下代码展示了如何使用全球加速域名访问 COS 服务。

示例代码

Objective-C
QCloudCOSXMLEndPoint *endpoint = [[QCloudCOSXMLEndPoint alloc]init];
endpoint.suffix = @"cos.accelerate.myqcloud.com";
说明:
更多完整示例,请前往 GitHub 查看。
Swift
let endpoint = QCloudCOSXMLEndPoint();
endpoint.suffix = "cos.accelerate.myqcloud.com";
说明:
更多完整示例,请前往 GitHub 查看。