跨域访问

最后更新时间:2021-01-05 16:04:02

    简介

    本文档提供关于跨域访问的 API 概览以及 SDK 示例代码。

    API 操作名 操作描述
    PUT Bucket cors 设置跨域配置 设置存储桶的跨域名访问权限
    GET Bucket cors 查询跨域配置 查询存储桶的跨域名访问配置信息
    DELETE Bucket cors 删除跨域配置 删除存储桶的跨域名访问配置信息

    设置跨域配置

    功能说明

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

    方法原型

    CosResult PutBucketCORS(const PutBucketCORSReq& request, PutBucketCORSResp* response);

    请求示例

    qcloud_cos::CosConfig config("./config.json");
    qcloud_cos::CosAPI cos(config);
    std::string bucket_name = "examplebucket-1250000000";
    qcloud_cos::PutBucketCORSReq req(bucket_name);
    qcloud_cos::PutBucketCORSResp resp;
    
    // 设置跨域请求内容
    qcloud_cos::CORSRule rule;
    rule.m_id = "123";  // 设置跨域配置 ID
    rule.m_allowed_headers.push_back("x-cos-meta-test");  // 设置跨域允许的 HTTP 请求头部
    rule.m_allowed_origins.push_back("http://www.qq.com");  // 设置跨域允许的来源域名
    rule.m_allowed_methods.push_back("PUT");  // 设置跨域允许的 HTTP 方法
    rule.m_allowed_methods.push_back("GET");
    rule.m_max_age_secs = "600";  // 设置有效配置的时间
    rule.m_expose_headers.push_back("x-cos-expose");  // 允许浏览器获取的 CORS 请求响应中的头部
    req.AddRule(rule);
    
    qcloud_cos::CosResult result = cos.PutBucketCORS(req, &resp);
    if (result.IsSucc()) {
        // 请求成功
    } else {
        // 请求失败,可以调用 CosResult 的成员函数输出错误信息,如 requestID 等
    }
    

    参数说明

    参数 参数描述 类型 是否必填
    req PutBucketCORS 操作的请求 PutBucketCORSReq
    resp PutBucketCORS 操作的响应 PutBucketCORSResp

    PutBucketCORSReq 提供以下成员函数:

    // 添加跨域规则
    void AddRule(const CORSRule& rule);
    // 添加跨域规则
    void SetRules(const std::vector<CORSRule>& rules)

    该请求涉及到的类定义如下:

    
    struct CORSRule {
        std::string m_id;
        std::string m_max_age_secs;
        std::vector<std::string> m_allowed_headers;
        std::vector<std::string> m_allowed_methods;
        std::vector<std::string> m_allowed_origins;
        std::vector<std::string> m_expose_headers;
    };
    

    查询跨域配置

    功能说明

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

    方法原型

    CosResult CosAPI::GetBucketCORS(const GetBucketCORSReq& request, GetBucketCORSResp* response);

    请求示例

    qcloud_cos::CosConfig config("./config.json");
    qcloud_cos::CosAPI cos(config);
    std::string bucket_name = "examplebucket-1250000000";
    qcloud_cos::GetBucketCORSReq req(bucket_name);
    qcloud_cos::GetBucketCORSResp resp;
    
    qcloud_cos::CosResult result = cos.GetBucketCORS(req, &resp);
    if (result.IsSucc()) {
        // 请求成功,调用 resp 方法获取跨域规则
    } else {
        // 请求失败,可以调用 CosResult 的成员函数输出错误信息,如 requestID 等
    }

    参数说明

    参数 参数描述 类型 是否必填
    req GetBucketCORS 操作的请求 GetBucketCORSReq
    resp GetBucketCORS 操作的响应 GetBucketCORSResp

    GetBucketCORSReq 提供以下成员函数:

    // 从响应中获取跨域规则
    std::vector<CORSRule> GetCORSRules() const;

    删除跨域配置

    功能说明

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

    方法原型

    CosResult BucketOp::DeleteBucketCORS(const DeleteBucketCORSReq& req, DeleteBucketCORSResp* resp);

    请求示例

    qcloud_cos::CosConfig config("./config.json");
    qcloud_cos::CosAPI cos(config);
    std::string bucket_name = "examplebucket-1250000000";
    qcloud_cos::DeleteBucketCORSReq req(bucket_name);
    qcloud_cos::DeleteBucketCORSResp resp;
    
    qcloud_cos::CosResult result = cos.DeleteBucketCORS(req, &resp);
    if (result.IsSucc()) {
        // 请求成功
    } else {
        // 请求失败,可以调用 CosResult 的成员函数输出错误信息,如 requestID 等
    }

    参数说明

    参数 参数描述 类型 是否必填
    req DeleteBucketCORS 操作的请求 DeleteBucketCORSReq
    resp DeleteBucketCORS 操作的响应 DeleteBucketCORSResp