您的位置:首页 > 其它

OSS如何添加非x-oss-meta-开头的自定义header

2018-03-01 16:47 316 查看
点击有惊喜

OSS支持用户在上传时指定"x-oss-meta-"前缀的header作为自定义header,用于存储文件的一些标识信息等自定义的信息,并在下载(GetObject/HeadObject)时作为返回头返回给用户。但是在某些场景下用户需要使用非"x-oss-meta-"前缀的header作为自定义header,比如用户的数据原来存储在自建的存储设备上,并且自定义了一些header,现在数据迁移到OSS上,需要保持这些header不变,因此OSS提供了相应的机制用来实现这个需求。


一 传入方式


1、通过"x-oss-persistent-headers"这个请求头传入

      这个请求头的格式如下:

          x-oss-persistent-headers: key1:base64_encode(value1),key2:base64_encode(value2)....

      其中key1/key2等为自定义的header,value2/value2等为对应自定义header的值,base64_encode指做base64编码,即将自定义header和对应值的base64编码作为一个key-value对用冒号连接,然后用逗号将所有的key-value对连接起来,放在x-oss-persistent-headers这个header中即可。

      例子:假如我要自定义两个header,分别为myheader1/myheader2,值分别为myvalue1/myvalue2,则需要在上传时指定下面这个头

          x-oss-persistent-headers:myheader1:bXl2YWx1ZTE=,myheader2:bXl2YWx1ZTI=

      这种方式适用于PutObject()/CopyObject()/AppendObject()/CompleteMultipartUpload()上传方式


2、通过"x-oss-persistent-headers"这个表单域传入

      这个表单域的值格式与上面1所述相同,这种传入方式适用于PostObject(),即表单上传


3、镜像回源时源站返回"x-oss-persistent-headers"

      如果用户通过OSS的镜像回源功能,也想保存类似的自定义header,则需要镜像源站返回"x-oss-persistent-headers"头,格式与1所述相同。这种方式适用于镜像回源。


二、访问方式

      通过GetObject()/HeadObject()接口,自定义的usermeta会通过返回头的方式返回给用户,比如上例,就会在回应头中增加两个头

                      myheader1:myvalue1

                      myheader2:myvalue2


三、例子

      接上述例子,上传时的完整的请求如下:
PUT /tmp HTTP/1.1

Host: 067365.oss-cn-hangzhou.aliyuncs.com

Accept-Encoding: identity

Content-Length: 19

User-Agent: aliyun-sdk-python/0.3.7 (Linux/2.6.32-220.23.2.ali1089.el5.x86_64/x86_64;2.7.8)

Host: 067365.oss-cn-hangzhou.aliyuncs.com

Date: Wed, 28 Feb 2018 02:03:25 GMT

x-oss-persistent-headers: myheader1:bXl2YWx1ZTE=,myheader2:bXl2YWx1ZTI=

Content-Type: application/octet-stream

Authorization: OSS a1nBNgkzzxcQMf8u:AT2DUCaIh4g9KLxEGmga2K82lf8=

for user meta test

HTTP/1.1 200 OK

Server: AliyunOSS

Date: Wed, 28 Feb 2018 02:03:25 GMT

Content-Length: 0

Connection: keep-alive

x-oss-request-id: 5A960DEDC46757366ADDB10D

ETag: "0F07FE95A928BB5A491AEFD31D6911AA"

x-oss-hash-crc64ecma: 13270199186025944929

Content-MD5: Dwf+lakou1pJGu/THWkRqg==

x-oss-server-time: 103
      下载文件时完整请求如下:
GET /tmp HTTP/1.1

User-Agent: curl/7.15.5 (x86_64-koji-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5

Host: 067365.oss-cn-hangzhou.aliyuncs.com

Accept: */*

HTTP/1.1 200 OK

Server: AliyunOSS

Date: Wed, 28 Feb 2018 02:24:57 GMT

Content-Type: application/octet-stream

Content-Length: 19

Connection: keep-alive

x-oss-request-id: 5A9612F95C44F0A86ADF3213

Accept-Ranges: bytes

ETag: "0F07FE95A928BB5A491AEFD31D6911AA"

Last-Modified: Wed, 28 Feb 2018 02:03:25 GMT

x-oss-object-type: Normal

x-oss-hash-crc64ecma: 13270199186025944929

x-oss-storage-class: Standard

myheader1: myvalue1

myheader2: myvalue2

Content-MD5: Dwf+lakou1pJGu/THWkRqg==

x-oss-server-time: 92

for user meta test
点击有惊喜

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: