Log Service API 是基于 HTTP 协议的 Rest 风格接口。它支持一组可以在所有 API 请求中使用的公共请求头(除特别说明,每个 Log Service API 请求都必须提供这些公共请求头),其详细定义如下:

Header 名称 类型 说明
Accept 字符串 客户端希望服务端返回的类型,目前支持 application/json、application/x-protobuf 两种,该字段为非必选参数,仅对 GET 请求有效。具体取值以各个接口定义为准。
Accept-Encoding 字符串 客户端希望服务端返回的压缩算法,目前支持 lz4、 deflate 或空(不压缩)。该字段为非必选参数,仅对 GET 类请求有效。具体取值以各个接口定义为准。
Authorization 字符串 签名内容,更多细节请参考 请求签名
Content-Length 数值 RFC 2616 中定义的 HTTP 请求 Body 长度。如果请求无 Body 部分,则不需要提供该请求头。
Content-MD5 字符串 请求 Body 经过 MD5 计算后的字符串,计算结果为大写。如果没有 Body 部分,则不需要提供该请求头。
Content-Type 字符串 RFC 2616 中定义的 HTTP 请求 Body 类型。目前 Log Service API 请求只支持 application/x-protobuf。如果没有 Body 部分,则不需要提供该请求头。具体取值以各个接口定义为准。
Date 字符串 当前发送时刻的时间,参数目前只支持 RFC 822 格式,使用 GMT 标准时间。格式化字符串如下:%a, %d %b %Y %H:%M:%S GMT (如:Mon, 3 Jan 2010 08:33:47 GMT)。
Host 字符串 HTTP 请求的完整 HOST 名字(不包括如 http:// 这样的协议头)。例如,big-game.cn-hangzhou.sls.aliyuncs.com
x-log-apiversion 字符串 API 的版本号,当前版本为 0.6.0。
x-log-bodyrawsize 数值 请求的 Body 原始大小。当无 Body 时,该字段为 0;当 Body 是压缩数据,则为压缩前的原始数据大小。该域取值范围为 0~3x1024x1024。该字段为非必选字段,只在压缩时需要。
x-log-compresstype 字符串 API 请求中 Body 部分使用的压缩方式。目前支持 lz4 压缩类型和 deflate 压缩类型(RFC 1951,使用 zlib 格式,参考 RFC 1950)。如果不压缩可以不提供该请求头。
x-log-date 字符串 当前发送时刻的时间,格式和 Date 头一致。该请求头为可选项。如果请求中包含该公共请求头,它的值会取代 Date 标准头的值用于服务端请求验证(该字段不参与签名)。无论是否有 x-log-date 头,HTTP 标准 Date 头都必须提供。
x-log-signaturemethod 字符串 签名计算方式,目前仅支持 hmac-sha1
x-acs-security-token 字符串 使用 STS 临时身份发送数据。当使用 STS 临时身份时必填,其他情况不要填写。
  • 请求中 Date 所表示的时间与服务器接收到该请求的时间最大可接受误差为 15 分钟,如果超过 15 分钟服务器端会拒绝该请求。如果请求中设置了 x-log-date 头部,则该时间误差计算基于 x-log-date 头的值。
  • 如果请求指明了压缩算法(在 x-log-compresstype 中指定),则需要把原始数据压缩后放到 HTTP Body 部分,而对应的 Content-Length、Content-MD5 头部也是按照压缩后的 Body 部分计算。
  • 由于某些平台上发送 HTTP 请求时无法指定 Date 头(由平台自身的库内部自动指定为发送当前时间),造成无法使用正确的 Date 值计算请求签名。在这种情况下,请指定 x-log-date 头并用该请求头的值参与请求签名计算。Log Service 服务端在接收到 API 请求后会首先判断是否有 x-log-date 头。如果有,则用它的值来做签名验证,否则就用 HTTP 的标准头 Date 做签名验证