您可以直接發起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 | 字串 | 訪問網域名稱,格式為 預設值:無 |
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概覽。