OSS定制自定义response header-阿里云开发者社区

开发者社区> 秋二> 正文

OSS定制自定义response header

简介: OSS通过传入"x-oss-persistent-headers"这个头,支持指定非"x-oss-meta-"开头的usermeta,满足特定用户特定场景的需求
+关注继续查看

      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


四、限制条件

  •     1. 通过这种方式指定的自定义header,不能以"x-oss-"为前缀,比如可以指定"myheader",但是不能指定"x-oss-myheader"
  •     2. 不能指定HTTP规定的标准头,比如host/content-md5/origin/range等等
  •     3. 如果上传时传入了与指定的自定义header相同的header,则两个header的值要保持相同。比如通过"x-oss-persistent-headers"指定了myheader,同时在请求头中单独传入了myheader,则两个header的值要相同
  •     4. 这种方式指定的自定义header也属于usermeta的范畴,因此也有最多8KB的限制,即所有的usermta总大小不能超过8KB


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
4068 0
背水一战 Windows 10 (64) - 控件(WebView): 加载指定 HttpMethod 的请求, 自定义请求的 http header, app 与 js 的交互
原文:背水一战 Windows 10 (64) - 控件(WebView): 加载指定 HttpMethod 的请求, 自定义请求的 http header, app 与 js 的交互 [源码下载] 背水一战 Windows 10 (64) - 控件(WebView): 加载指定 HttpMeth...
1115 0
自定义LOG投递OSS数据Partition,优化你的计算
数据划分Partition OSS数据存储具有高可靠、低成本等优点,是海量数据存储的最佳选择之一,尤其适用于半结构化的日志存储,并可以结合E-MapReduce(使用Hive、Impala等计算引擎)通过schema-on-read方式加载数据做查询分析。
3987 0
阿里云OSS php 自定义域名 绑定bucket
做OSS图片上传时,可以采用阿里云分配的oss域名,也可以使用自定义域名(绑定用户域名),使用阿里云域名太长,不美观,我使用的绑定用户域名。使用阿里云分配域名时图片文件可以正常上传,使用自定义绑定用户域名时发现报错.
1442 0
使用oss c sdk自定义上传和下载callback
使用oss c sdk自定义上传和下载callback,简单预处理数据
4055 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4480 0
+关注
秋二
阿里云对象存储(OSS)开发工程师
4
文章
151
问答
来源圈子
更多
阿里云存储基于飞天盘古2.0分布式存储系统,产品包括对象存储OSS、块存储Block Storage、共享文件存储NAS、表格存储、日志存储与分析、归档存储及混合云存储等,充分满足用户数据存储和迁移上云需求,连续三年跻身全球云存储魔力象限四强。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载