更新时间:2026-03-13 GMT+08:00
分享

obs_response_handler

表1 obs_response_handler

参数名称

参数类型

是否必选

描述

properties_callback

obs_response_properties_callback *

必选

参数解释:

响应回调函数指针,可以在这个回调中把properties的内容记录到callback_data(用户自定义回调数据)中。

约束限制:

取值范围:

默认取值:

complete_callback

obs_response_complete_callback *

必选

参数解释:

结束回调函数指针,可以在这个回调中把obs_status和obs_error_details的内容记录到callback_data(用户自定义回调数据)中。

约束限制:

取值范围:

默认取值:

表2 obs_response_properties_callback

参数名称

参数类型

是否必选

描述

properties

const obs_response_properties*

必选

参数解释:

响应头域中的参数,建议将其内容记录到callback_data(用户自定义回调数据)中。

约束限制:

取值范围:

默认取值

callback_data

void *

必选

参数解释:

用户自定义回调数据指针。

约束限制:

取值范围:

默认取值

表3 obs_response_complete_callback

参数名称

参数类型

是否必选

描述

status

obs_status

必选

参数解释:

SDK内部的请求状态码。

约束限制:

取值范围:

默认取值

error_details

const obs_error_details*

必选

参数解释:

响应回调函数指针,可以在这个回调中把properties的内容记录到callback_data(用户自定义回调数据)中。

约束限制:

取值范围:

默认取值

callback_data

void *

必选

参数解释:

用户自定义回调数据指针。

约束限制:

取值范围:

默认取值

表4 obs_response_properties

参数名称

参数类型

是否必选

描述

request_id

const char *

可选

参数解释:

由OBS创建来唯一确定本次请求的值,可以通过该值来定位问题。

约束限制:

取值范围:

默认取值

request_id2

const char *

可选

参数解释:

帮助定位问题的特殊符号。

约束限制:

取值范围:

默认取值

content_type

const char *

可选

参数解释:

对象的文件类型(MIME类型)。Content-Type(MIME)用于标识发送或接收数据的类型,浏览器根据该参数来决定数据的打开方式。

约束限制:

取值范围:

默认取值

content_length

uint64_t

可选

参数解释:

响应消息体的字节长度。

约束限制:

取值范围:

默认取值

server

const char *

可选

参数解释:

请求中的Server头域

约束限制:

取值范围:

默认取值

etag

const char *

可选

参数解释:

对象的base64编码的128位MD5摘要。ETag是对象内容的唯一标识,可以通过该值识别对象内容是否有变化。比如上传对象时ETag为A,下载对象时ETag为B,则说明对象内容发生了变化。ETag只反映变化的内容,而不是其元数据。上传的对象或复制操作创建的对象,都有唯一的ETag。

约束限制:

当对象是服务端加密的对象时,ETag值不是对象的MD5值。

取值范围:

长度为32的字符串。

默认取值:

expiration

const char *

可选

参数解释:

对象的详细过期信息。

约束限制:

取值范围:

大于0的整型数,单位:天。

默认取值:

website_redirect_location

const char *

可选

参数解释:

当桶设置了Website配置,就可以设置对象元数据的这个属性,Website接入点返回301重定向响应,将获取这个对象的请求重定向到该属性指定的桶内另一个对象或一个外部的URL,该参数指明对象的重定向地址。

例如,重定向请求到桶内另一对象:

x-obs-website-redirect-location:/anotherPage.html

或重定向请求到一个外部URL:

x-obs-website-redirect-location:http://www.example.com/

OBS将这个值从头域中取出,保存在对象的元数据“WebsiteRedirectLocation”中。

约束限制:

  • 必须以“/”、“http://”或“https://”开头,长度不超过2KB。
  • OBS仅支持为桶根目录下的对象设置重定向,不支持为桶中文件夹下的对象设置重定向。

默认取值:

version_id

const char *

可选

参数解释:

对象的版本号。如果该对象无版本号,则为NULL。

约束限制:

长度为32的字符串。

取值范围:

默认取值

meta_data_count

int

可选

参数解释:

meta_data数组中的元素个数

约束限制:

取值范围:

默认取值:

meta_data

const obs_name_value *

可选

参数解释:

对象的自定义元数据。OBS支持用户使用以“x-obs-meta-”开头的消息头来加入自定义的元数据,以便对对象进行自定义管理。当用户获取此对象或查询此对象元数据时,加入的自定义元数据将会在返回的消息头中出现。

约束限制:

取值范围:

默认取值:

use_server_side_encryption

char

可选

参数解释:

如果开启了服务端加密,会被置为'\1'

约束限制:

取值范围:

默认取值:

allow_origin

const char *

可选

参数解释:

当桶设置了CORS配置,如果请求中的Origin满足服务端的CORS配置,则在响应中包含这个Origin。

约束限制:

取值范围:

符合CORS协议的取值范围。

默认取值:

allow_headers

const char *

可选

参数解释:

当桶设置了CORS配置,如果请求的headers满足服务端的CORS配置,则在响应中包含这个headers。

约束限制:

最多可填写一个“*”通配符,不支持&、:、<、空格以及中文字符。

取值范围:

符合CORS协议的取值范围。

默认取值:

max_age

const char *

可选

参数解释:

桶CORS规则中的MaxAgeSeconds。MaxAgeSeconds指请求来源的客户端可以对跨域请求返回结果的缓存时间。

约束限制:

每个CORSRule可以包含至多一个MaxAgeSeconds。

取值范围:

大于等于0的整型数,单位:秒。

默认取值:

3000

allow_methods

const char *

可选

参数解释:

当桶设置了CORS配置,如果请求的Access-Control-Request-Method满足服务端的CORS配置,则在响应中包含这条rule中的Methods。

约束限制:

取值范围:

  • GET
  • PUT
  • HEAD
  • POST
  • DELETE

取值范围:

expose_headers

const char *

可选

参数解释:

桶CORS规则中的ExposeHeader。ExposeHeader是指CORS规则允许响应中可返回的附加头域,给客户端提供额外的信息。默认情况下浏览器只能访问以下头域:Content-Length、Content-Type,如果需要访问其他头域,需要在附加头域中配置。

约束限制:

不支持*、&、:、<、空格以及中文字符。

取值范围:

默认取值:

storage_class

const char *

可选

参数解释:

对象的存储类别。

约束限制:

仅当对象为非标准存储类别时,会返回此头域。

取值范围:

  • WARM(指低频存储)
  • COLD(指归档存储)
  • DEEP_ARCHIVE(指深度归档存储)

默认取值:

server_side_encryption

const char *

可选

参数解释:

该头域表示服务端的加密方式。

示例:x-obs-server-side-encryption:kms

约束限制:

如果服务端加密是SSE-KMS方式,响应包含该头域。

取值范围:

  • kms(指SSE-KMS加密方式)
  • obs(指SSE-OBS加密方式)

默认取值:

kms_key_id

const char *

可选

参数描述:

密钥ID。当加密方式为SSE-KMS且使用指定密钥加密时,需输入密钥ID。

约束限制:

当您设置了server_side_encryption且赋值为“kms”,即选择kms加密方式时,才能使用该头域指定加密密钥。

默认取值:

当您选择使用kms加密方式,但未设置此头域时,默认的主密钥将会被使用。如果默认主密钥不存在,系统将默认创建并使用。

customer_algorithm

const char *

可选

参数解释:

如果服务端加密是SSE-C方式,响应包含该头域,该头域表示解密使用的算法。

约束限制:

取值范围:

AES256(指AES256解密算法)

默认取值:

customer_key_md5

const char *

可选

参数解释:

如果服务端加密是SSE-C方式,响应包含该头域,该头域表示解密使用的密钥的MD5值。

约束限制:

由密钥值经过MD5加密再经过Base64编码后得到,示例:4XvB3tbNTN+tIEVa0/fGaQ==。

取值范围:

密钥ID MD5的base64值。

默认取值:

bucket_location

const char *

可选

参数解释:

桶的区域位置信息。

约束限制:

取值范围:

默认取值:

obs_version

const char *

可选

参数解释:

桶所在的OBS服务版本号。

约束限制:

取值范围:

  • 3.0:最新版本的桶。
  • --:表示老版本的桶。

默认取值:

restore

const char *

可选

参数解释:

标识对象的恢复状态。

示例:正在恢复ongoing-request="true";已恢复 ongoing-request="false", expiry-date="Wed, 7 Nov 2012 00:00:00 GMT"。其中expiry-date表示对象恢复后的失效时间。

约束限制:

仅当对象为归档存储或深度归档存储类别,并且处于正在恢复或已经恢复时,会返回此头域。

取值范围:

默认取值:

obs_object_type

const char *

可选

参数解释:

对象的类型。

约束限制:

仅当对象为非Normal对象时,会返回此头域。

取值范围:

Appendable

默认取值:

obs_next_append_position

const char *

可选

参数解释:

指明下一次请求应该提供的position。

约束限制:

仅当对象为Appendable对象时,会返回此头域。

取值范围:

默认取值:

obs_head_epid

const char *

可选

参数解释:

当前桶的企业项目ID,开通企业项目的用户可以从企业项目服务获取。

约束限制:

格式为uuid,未开通企业项目的用户可以不带该头域。

取值范围:

默认取值:

reserved_indicator

const char *

可选

参数解释:

帮助定位问题的特殊符号。

约束限制:

取值范围:

默认取值:

表5 obs_error_details

参数名称

参数类型

描述

message

const char*

参数解释:

错误响应消息体XML中具体错误更全面、详细的英文解释。

约束限制:

取值范围:

取值范围可参见错误码

默认取值:

resource

const char*

参数解释:

该错误相关的桶或对象资源。

约束限制:

取值范围:

默认取值:

further_details

const char*

参数解释:

错误响应消息体XML中的FurtherDetails元素的值。

约束限制:

取值范围:

默认取值:

extra_details_count

int

参数解释:

错误响应消息体XML中的其他元素的数量。

约束限制:

取值范围:

默认取值:

extra_details

obs_name_value*

参数解释:

错误响应消息体XML中的其他元素的值。

约束限制:

取值范围:

默认取值:

error_headers_count

int

参数解释:

error_headers的头域数量。

约束限制:

取值范围:

默认取值:

error_headers

char**

参数解释:

响应头域中包含error的所有头域。

约束限制:

取值范围:

默认取值:

表6 obs_name_value

参数名称

参数类型

是否必选

描述

name

char *

可选

参数解释:

属性的键。

约束限制:

取值范围:

默认取值:

value

char *

可选

参数解释:

属性的值。

约束限制:

取值范围:

默认取值:

表7 obs_status

枚举值

说明

OBS_STATUS_OK

请求成功。

OBS_STATUS_InitCurlFailed

初始化curl失败。

OBS_STATUS_InternalError

内部错误。

OBS_STATUS_OutOfMemory

本地环境内存不足。

OBS_STATUS_FailedToIInitializeRequest

初始化请求失败。

OBS_STATUS_ConnectionFailed

网络连接失败。

OBS_STATUS_XmlParseFailure

xml解析失败。

OBS_STATUS_NameLookupError

域名解析失败。

OBS_STATUS_FailedToConnect

无法连接到服务端。

OBS_STATUS_PartialFile

网络传输。

OBS_STATUS_InvalidParameter

参数非法。

OBS_STATUS_NoToken

当前并发数已经超过最大并发数(默认值1000),通过set_online_request_max_count函数去调整最大并发数。

OBS_STATUS_OpenFileFailed

打开文件失败。

OBS_STATUS_AccessDenied

请求被拒绝。

OBS_STATUS_MalformedPolicy

请求policy格式不正确。

OBS_STATUS_MalformedXML

请求xml格式不正确。

OBS_STATUS_MethodNotAllowed

请求方法不允许。

OBS_STATUS_SignatureDoesNotMatch

签名不匹配,检查ak、sk、token是否对应或有误。

OBS_STATUS_ServiceUnavailable

服务端异常。

OBS_STATUS_SlowDown

请求频率过快。

相关文档