問題描述
請求籤名不匹配。
問題原因
您發起的請求採用Amazon S3相容的V2版本簽名,但是請求中提供的簽名與OSS計算的簽名不匹配。
問題樣本
您發起了基於Amazon S3相容的V2版本簽名的請求,但是簽名計算不正確。
GET /test.txt?AWSAccessKeyId=nz2p****&Expires=1141889120&Signature=WrongSignature HTTP/1.0
Date: Tue, 20 Dec 2022 08:48:18 GMT
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
x-oss-s3-compat: true解決方案
推薦採用SDK發起請求,可以免去手動簽名的過程。具體操作,請使用阿里雲SDK發起請求概述。
使用SDK發起請求後,如果報錯簽名不匹配,請按以下步驟進行排查。
確認Endpoint格式是否填寫正確。
以華東1(杭州)地區為例,正確的Endpoint格式為http://oss-cn-hangzhou.aliyuncs.com。關於其他地區對應的Endpoint填寫方法,請參見訪問網域名稱和資料中心。
確認AccessKey ID與AccessKey Secret是否填寫正確。
AccessKey ID與AccessKey Secret前後不能存在空格。
確認BucketName與ObjectKey符合命名要求。
BucketName的命名規則如下:
Bucket名稱在OSS範圍內必須全域唯一。
只能包括小寫字母、數字和短劃線(-)。
必須以小寫字母或者數字開頭和結尾。
長度為3~63個字元。
ObjectKey的命令規則如下:
使用UTF-8編碼。
長度必須在1~1023位元組之間。
不能以正斜線(/)或者反斜線(\)開頭。
區分大小寫。
檢查簽名方法。
如果您是自己實現的簽名且您的業務環境適合使用SDK,請參考OSS SDK提供的簽名方法完成簽名。更多資訊,請參見使用阿里雲SDK發起請求概述。
如果您是自己實現的簽名且您的業務環境不適合使用SDK,您需要手動編寫代碼計算簽名並將簽名添加到REST API請求中。更多資訊,請參見使用REST API發起請求。
確認使用的代理中是否添加額外的Header。
採用相容Amazon S3 SDK發起請求。具體操作,請參見使用Amazon S3 SDK訪問OSS。