赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 对象存储
  4. 开发参考
  5. OSS签名机制指南
  6. 使用REST API发起请求

使用REST API发起请求

  • OSS签名机制指南
  • 发布于 2025-04-21
  • 0 次阅读
文档编辑
文档编辑

您可以直接发起REST API请求。使用REST API发起请求适用于对程序自定义要求较高的场景。您需要手动编写代码计算签名并将签名添加到REST API请求中。OSS仅支持虚拟托管(Virtual Hosted)风格的REST API请求。

OSS域名构成规则

针对OSS的网络请求,除了GetService(ListBuckets)以及DescribeRegions API以外,其他所有请求的域名都是由带有指定Bucket信息的三级域名组成的。

访问域名结构为BucketName.Endpoint。BucketName为您的存储空间名称,Endpoint为存储空间对应的地域域名。

Endpoint分为外网、内网以及传输加速Endpoint。

说明
  • OSS以HTTP RESTful API的形式对外提供服务。访问不同的Region需要不同的Endpoint。关于Region和Endpoint对照表,请参见OSS地域和访问域名。

  • 内网、外网Endpoint可以直接使用,无需额外配置。

  • 传输加速Endpoint使用前需先开启Bucket的传输加速功能。具体操作,请参见开启传输加速。

  • 您可以通过绑定自定义域名或绑定自定义域名至OSS传输加速域名,将OSS的外网Endpoint替换为您的自定义域名。

以华东1(杭州)地域的访问域名为例,说明如下。

请求风格

基于安全考虑,OSS不支持路径(Path)风格的REST API请求,仅支持虚拟托管风格的REST API请求。在虚拟托管风格的URL中,存储空间(Bucket)名称是域名的一部分。

虚拟托管风格的URL格式如下:

https://BucketName.Endpoint/objectName

虚拟托管风格的URL示例如下:

https://examplebucket.oss-cn-hangzhou.aliyuncs.com/demo.png

请求头格式

向OSS发起的REST API请求的请求头格式如下:

GET / HTTP/1.1
Host: BucketName.Endpoint
Date: GMT Date
Authorization: SignatureValue

名称

类型

描述

Date

字符串

HTTP 1.1协议中规定的GMT时间,例如Sun, 05 Sep 2021 23:00:00 GMT。

默认值:无

Host

字符串

访问域名,格式为BucketName.Endpoint。

默认值:无

Authorization

字符串

用于验证请求合法性的认证信息。

默认值:无

使用场景:非匿名请求

请求示例

虚拟托管风格请求示例

OSS资源示例如下:

  • 存储空间名称:examplebucket

  • 地域:oss-cn-hangzhou

  • 文件名称:demo.png

URL示例如下:

https://examplebucket.oss-cn-hangzhou.aliyuncs.com/demo.png

请求示例如下:

GET /demo.png HTTP/1.1
Host: examplebucket.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue

自定义域名请求示例

自定义域名示例如下:

自定义域名为www.example.com。

OSS资源示例如下:

  • 存储空间名称:examplebucket

  • 文件名称:demo.png

URL示例如下:

https://www.example.com/demo.png

请求示例如下:

GET /demo.png HTTP/1.1
Host: example.com
Date: GMT Date
Authorization: SignatureValue

签名方式

您可以选择以下任意一种方式计算签名并将签名添加到REST API请求中:

  • 在Header中包含签名:一般情况下,推荐您使用在Header中包含签名的签名方式。详情请参见在Header中包含签名。

  • 在URL中包含签名:使用在URL中签名的方式,会将授权的数据在过期时间内暴露在互联网上,具有一定的风险。该方式适用于将URL转给第三方实现授权访问的场景。详情请参见在URL中包含签名。

以上两种签名方式的区别如下:

项目

在Header中包含签名

在URL中包含签名

是否支持设置Expires

否

是

常用Method

GET、POST、PUT、DELETE

GET、PUT

时间格式

通过Date请求头表示请求时间,格式为GMT。

重要

如果Date表示的请求时间和OSS服务器的当前时间相差15分钟以上,OSS服务器将拒绝该请求,并返回HTTP 403错误。

通过Expires字段表示过期时间,格式为Unix时间戳。

重要

如果OSS接收到该URL请求的时间晚于签名中包含的Expires参数时,则返回请求超时错误。

Signature是否需要URL编码

否

是

API

关于OSS提供的REST API接口,请参见API概览。

后续参考

  • 在Header中包含签名

  • 在URL中包含签名

  • POST签名

  • 签名错误问题排查

相关文章

使用REST API发起请求 2025-04-21 17:16

您可以直接发起REST API请求。使用REST API发起请求适用于对程序自定义要求较高的场景。您需要手动编写代码计算签名并将签名添加到REST API请求中。OSS仅支持虚拟托管(Virtual Hosted)风格的REST API请求。

V1签名升级为V4签名 2025-04-21 17:16

OSS 将逐步下线 V1 签名,请尽快升级至更安全的 V4 签名,以确保应用稳定运行。 如何从V1签名升级为V4签名 根据当前使用方式,参考对应的指引完成升级。

签名错误问题排查 2025-04-21 17:16

本文主要介绍OSS签名错误的常见场景以及排查方法。 签名错误报错信息

签名版本4(推荐) 2025-04-21 17:16

向 OSS 发起请求时,添加包含 V4 签名的 Authorization 请求头(Header),以确保请求能够通过身份验证。优先使用 OSS 提供的 SDK 发起请求,因为 SDK 已集成复杂的 V4 签名算法。只有在无法使用 SDK 时,才需要参考本文自行实现 V4 签名算法。 SDK 签名实

签名版本1 2025-04-21 17:16

在OSS中,使用HTTP请求的Authorization Header来携带签名信息是进行身份验证的最常见方法。除了使用POST签名和URL签名之外,所有的OSS操作都需要通过Authorization Header来进行身份验证。本文介绍如何使用V1签名算法来在Header中包含签名。

签名版本4(推荐) 2025-04-21 17:16

除了通过HTTP请求头部的Authorization字段进行签名授权外,您还可以生成一个包含签名和其他必要请求信息的预签名URL。通过这种方式,您可以在不透露访问凭证的情况下,授予第三方在特定有效期内对OSS资源的访问权限。本文介绍如何使用V4签名算法实现在URL中包含签名。 SDK签名实现 OSS

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号