简介
本文档提供关于如何使用非默认域名请求 COS 服务。
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*)filedsrequest:(QCloudBizHTTPRequest*)requesturlRequest:(NSMutableURLRequest*)urlRequstcompelete:(QCloudHTTPAuthentationContinueBlock)continueBlock{//这里同步从后台服务器获取临时密钥,强烈建议将获取临时密钥的逻辑放在这里,最大程度上保证密钥的可用性//...QCloudCredential* credential = [QCloudCredential new];// 临时密钥 SecretId// sercret_id 替换为用户的 SecretId,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capicredential.secretID = @"SECRETID";// 临时密钥 SecretKey// sercret_key替换为用户的 SecretKey,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capicredential.secretKey = @"SECRETKEY";// 临时密钥 Token// 如果使用永久密钥不需要填入 token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048credential.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/capicredential.secretID = "SECRETID";// 临时密钥 SecretKey// sercret_key 替换为用户的 SecretKey,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capicredential.secretKey = "SECRETKEY";// 临时密钥 Token// 如果使用永久密钥不需要填入 token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048credential.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 默认加速域名
以下代码展示了如何使用默认加速域名访问 COS 服务。
示例代码
Objective-C
QCloudCOSXMLEndPoint *endpoint = [[QCloudCOSXMLEndPoint alloc] init];endpoint.suffix = @"file.myqcloud.com";
说明:
Swift
let endpoint = QCloudCOSXMLEndPoint();endpoint.suffix = "file.myqcloud.com";
说明:
CDN 自定义加速域名
以下代码展示了如何使用自定义加速域名访问 COS 服务。
示例代码
Objective-C
QCloudCOSXMLEndPoint *endpoint = [[QCloudCOSXMLEndPoint alloc] initWithLiteralURL:[NSURL URLWithString:@"exampledomain.com"]];
说明:
Swift
let endpoint = QCloudCOSXMLEndPoint.init(literalURL: NSURL.init(string: "exampledomain.com") as URL?);
说明:
自定义源站域名
以下代码展示了如何使用自定义源站域名访问 COS 服务。
示例代码
Objective-C
NSString *customDomain = @"exampledomain.com"; // 自定义加速域名QCloudCOSXMLEndPoint *endpoint = [[QCloudCOSXMLEndPoint alloc] initWithLiteralURL:[NSURL URLWithString:customDomain]];
说明:
Swift
let endpoint = QCloudCOSXMLEndPoint.init(literalURL: NSURL.init(string: "exampledomain.com") as URL?);
说明:
全球加速域名
以下代码展示了如何使用全球加速域名访问 COS 服务。
示例代码
Objective-C
QCloudCOSXMLEndPoint *endpoint = [[QCloudCOSXMLEndPoint alloc]init];endpoint.suffix = @"cos.accelerate.myqcloud.com";
说明:
Swift
let endpoint = QCloudCOSXMLEndPoint();endpoint.suffix = "cos.accelerate.myqcloud.com";
说明: