日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

調(diào)用PostObject接口的常見(jiàn)錯(cuò)誤及解決方法

更新時(shí)間:

概述

本文主要介紹調(diào)用PostObject接口出現(xiàn)的常見(jiàn)錯(cuò)誤及解決方法。

詳細(xì)信息

調(diào)用PostObject接口出現(xiàn)問(wèn)題時(shí),您可以參見(jiàn)PostObject,確認(rèn)調(diào)用的配置是否正常。若問(wèn)題沒(méi)有解決,請(qǐng)參考以下內(nèi)容。

PostObject常見(jiàn)報(bào)錯(cuò)

常見(jiàn)報(bào)錯(cuò) 原因 解決方法
ErrorCode: MalformedPOSTRequest ErrorMessage: The body of your POST request is not well-formed multipart/form-data 表單域格式不符合要求。 表單域格式請(qǐng)查看PostObject表單域格式
ErrorCode: InvalidAccessKeyId ErrorMessage: The OSS Access Key Id you provided does not exist in our records. AccessKeyID禁用或不存在,或者過(guò)期的臨時(shí)用戶AccessKeyID,或者臨時(shí)用戶沒(méi)有提供STS Token。 排查方法請(qǐng)參參見(jiàn)InvalidAccessKeyId錯(cuò)誤排查
ErrorCode: AccessDenied ErrorMessage: Invalid according to Policy: Policy expired. 表單域Policy中的expiration過(guò)期。 請(qǐng)調(diào)整Policy中的expiration,注意expiration的格式ISO8601 GMT
ErrorCode: AccessDenied ErrorMessage: SignatureDoesNotMatch The request signature we calculated does not match the signature you provided. Check your key and signing method. 簽名錯(cuò)誤。 簽名方法請(qǐng)查看PostObject的簽名
ErrorCode: InvalidPolicyDocument ErrorMessage: Invalid Policy: Invalid Simple-Condition: Simple-Conditions must have exactly one property specified. 請(qǐng)求中Policy至少包含一個(gè)condition。 具體方法請(qǐng)查看PostObject的Policy格式
ErrorCode: InvalidPolicyDocument ErrorMessage: Invalid Policy: Invalid JSON: unknown char e 請(qǐng)求中的Policy格式不正確。 請(qǐng)檢查Policy格式,"是否缺失,轉(zhuǎn)義字符前是否有\
ErrorCode: InvalidPolicyDocument ErrorMessage: Invalid Policy: Invalid JSON: , or ] expected 請(qǐng)求中的Policy格式不正確。 請(qǐng)檢查Policy中是否缺少,]
ErrorCode: AccessDenied ErrorMessage: Invalid according to Policy: Policy Condition failed: [“starts-with”, “$key”, “user/eric/“] 請(qǐng)求指定的KeyPolicy限定的不符。 請(qǐng)檢查請(qǐng)求中表單域Key的值。
ErrorCode: AccessDenied ErrorMessage: Invalid according to Policy: Policy Condition failed: [“eq”, “$bucket”, “mingdi-bjx”] 請(qǐng)求指定BucketPolicy限定的不符。 請(qǐng)檢查endpoint中的Bucket的值。
ErrorCode: AccessDenied ErrorMessage: Invalid according to Policy: Policy Condition failed: [“starts-with”, “$x-oss-meta-prop”, “prop-“] 請(qǐng)求指定的文件元數(shù)據(jù)x-oss-meta-prop與policy限定的不符。 請(qǐng)檢查請(qǐng)求中的x-oss-meta-prop的值。
ErrorCode: AccessDenied ErrorMessage: Invalid according to Policy: Policy Condition failed: [“eq”, “${field}”, “${value}”] 表單域中指定的{field}Policy中限定的值不符,或者在請(qǐng)求中沒(méi)有指定。 請(qǐng)檢查請(qǐng)求中的{field}的值。
ErrorCode: AccessDenied ErrorMessage: You have no right to access this object because of bucket acl. 當(dāng)前用戶無(wú)權(quán)限。 請(qǐng)參見(jiàn)OSS權(quán)限問(wèn)題及排查
ErrorCode: InvalidArgument ErrorMessage: The bucket POST must contain the specified ‘key’. If it is specified, please check the order of the fields 表單域沒(méi)有指定Key,或者放在了表單域file后。 請(qǐng)?zhí)砑颖韱斡?code id="codeph-fo0-9xx-ohd">Key或調(diào)整順序。

PostObject常見(jiàn)問(wèn)題

問(wèn)題

解決方法

如何指定Key。

Key即Object name,在表單域Key中指定,示例如下所示。

Content-Disposition: form-data; name="key"
{key}
--9431149156168
如何指定Object內(nèi)容。

Object內(nèi)容通過(guò)表單域file中指定,示例如下所示。

Content-Disposition: form-data; name="file"; filename="images.png"
Content-Type: image/png
{file-content}
--9431149156168

說(shuō)明

  • 表單域file必須是表單中的最后一個(gè)域,即表單域file必須放在所有表單域后。
  • filename是上傳的本地文件名稱,而不是Objectname。
如何指定Object類型content-type。

Object類型在表單域file中指定Content-Type,而不是Header中的Content-Type,示例如下所示。

Content-Disposition: form-data; name="file"; filename="images.png"
Content-Type: image/png
{file-content}
--9431149156168
如何指定Object內(nèi)容MD5校驗(yàn)content-md5。

在PostObject請(qǐng)求頭中指定Content-MD5,注意MD5值是整個(gè)Body的MD5,即所有表單域的MD5。請(qǐng)求Header示例如下所示。

POST / HTTP/1.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.6)
Content-Type: multipart/form-data; boundary=9431149156168
Content-MD5: tdqHe4hT/TuKb7Y4by+nJg==
Host: mingdi-hz.oss-cn-hangzhou.aliyuncs.com
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
Content-Length: 5246
--9431149156168
如何指定簽名Signature。

簽名的計(jì)算方法請(qǐng)查看PostObject中的簽名,簽名通過(guò)表單域Signature攜帶。

如何使用臨時(shí)用戶STS Token執(zhí)行PostObject。

臨時(shí)用戶密鑰的AccessKeyID、AccessKeySecret用法跟主用戶、子用戶相同,Token放在表單域x-oss-security-token中攜帶,示例如下所示。

Content-Disposition: form-data; name="Signature"
5L0+KaeugxYygfqWLJLoy0ehOmA=
--9431149156168
Content-Disposition: form-data; name="x-oss-security-token"
{Token}
--9431149156168
說(shuō)明:如果您想了解更多訪問(wèn)控制的信息,請(qǐng)參見(jiàn)阿里云訪問(wèn)控制
如何指定上傳回調(diào)(Callback)。

上傳回調(diào)通過(guò)表單域callback攜帶,示例如下所示。

Content-Disposition: form-data; name="callback"
eyJjYWxsYmFja0JvZHlUeXBlIjogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIsICJjYWxsYmFja0JvZHkiOiAiZmlsZW5hbWU9JHtvYmplY3R9JnNpemU9JHtzaXplfSZtaW1lVHlwZT0ke21pbWVUeXBlfSIsICJjYWxsYmFja1VybCI6ICJodHRwOi8vb3NzLWRlbW8uYWxpeXVuY3MuY29tOjIzNDUwIn0=
--9431149156168

Callback的自定義參數(shù)也是通過(guò)表單域攜帶,示例如下所示。

Content-Disposition: form-data; name="x:var1"
{var1-value}
--9431149156168
說(shuō)明:如果您想了解Callback更多內(nèi)容,請(qǐng)參見(jiàn)上傳回調(diào)
如何指定Content-Transfer-Encoding。

在表單域file中指定Content-Transfer-Encodingfile表單域示例如下所示。

Content-Disposition: form-data; name="file"; filename="images.png"
Content-Type: image/png
Content-Transfer-Encoding: base64
{file-content}
--9431149156168
如何指定用戶自定義元信息Object User Meta。

用戶自定義元信息,可以通過(guò)表單域指定,示例如下所示。

Content-Disposition: form-data; name="x-oss-meta-uuid"
{uuid}
--9431149156168
Content-Disposition: form-data; name="x-oss-meta-tag"
{tag}
--9431149156168
說(shuō)明:文件元信息更詳細(xì)的說(shuō)明,請(qǐng)參見(jiàn)文件元信息Object Meta
如何指定限定條件expiration、Key、Bucket、size、Header等。

OSS的PostObject支持豐富的條件限制,可以滿足高安全性要求。限定條件Conditions可以通過(guò)表單域Policy 指定,詳細(xì)的說(shuō)明請(qǐng)查看上面的PostObject的Policy格式。Policy的示例如下所示。

{
    "expiration": "2018-01-01T12:00:00.000Z",
    "conditions": [
        ["eq", "[$Bucket]", "md-hz"],
        ["starts-with", "[$Key]", "md/conf/"],
        ["content-length-range", 0, 104857600]
    ]
}

上面的Policy實(shí)例中,用戶的PostObject操作的限定條件如下:

  • [$Bucket]必須是md-hz。
  • [$Key]必須以md/conf/開(kāi)頭。
  • 上傳的文件長(zhǎng)度必須在100M以下。
  • 請(qǐng)求時(shí)間在2018-01-01T12:00:00.000Z之前。
如何指定Cache-Control、Content-Type、Content-Disposition、Content-Encoding、Expires等HTTP Header。

Cache-Control Content-Type、Content-Disposition、Content-Encoding、Expires等HTTP Header需要在表單域中指定,這些HTTP Header的含義請(qǐng)參見(jiàn)RFC2616 。但是Content-MD5需要在Post Header中指定。

PostObject示例

PostObject表單域格式

  • PostObject請(qǐng)求格式,有以下注意點(diǎn):
    • Header一定要有Content-Type: multipart/form-data; boundary={boundary}
    • Header和Body之間由\r\n--{boundary}分割。
    • 表單域格式如下所示。
      Content-Disposition: form-data;
              name="{key}"\r\n\r\n{value}\r\n--{boundary}
    • 表單域名稱大小寫敏感,如Policy、Key、file、OSSAccessKeyId、OSSAccessKeyId、Content-Disposition。
      注意:表單域file必須為最后一個(gè)表單域。
    • Bucket為public-read-write時(shí),可以不指定表單域OSSAccessKeyId、Policy、Signature,一旦指定OSSAccessKeyId、Policy、Signature中的任意一個(gè),無(wú)論Bucket是否為public-read-write,則另兩個(gè)必須指定。
  • PostObject請(qǐng)求的示例如下所示。
    POST / HTTP/1.1
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.6)
    Content-Type: multipart/form-data; boundary=9431149156168
    Host: mingdi-hz.oss-cn-hangzhou.aliyuncs.com
    Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
    Connection: keep-alive
    Content-Length: 5052
    --9431149156168
    Content-Disposition: form-data; name="key"
    test-key
    --9431149156168
    Content-Disposition: form-data; name="Content-Disposition"
    attachment;filename=D:\img\1.png
    --9431149156168
    Content-Disposition: form-data; name="OSSAccessKeyId"
    2NeL********j2
    說(shuō)明
    • 以上示例請(qǐng)求中\r\n顯示為新行,即換行,后面的示例請(qǐng)求類似。
    • 以上示例為部分內(nèi)容,完整的請(qǐng)求請(qǐng)參見(jiàn)PostObject
  • 如果您還有疑問(wèn),請(qǐng)參考如下示例代碼:

PostObject的Policy格式

  • PostObject請(qǐng)求的Policy表單域用于驗(yàn)證請(qǐng)求的合法性,聲明了PostObject請(qǐng)求必須滿足的條件。限定條件如下所示。
    • UTF-8格式的JSON文本,經(jīng)過(guò)base64編碼后放在表單域Policy中。
    • Policy中必須包含expiration和condtions,其中condtions至少有一項(xiàng)。
  • 下面是base64編碼前的Policy示例,expiration項(xiàng)指定了請(qǐng)求的過(guò)期時(shí)間,使用的是ISO8601 GMT時(shí)間格式,例如:2018-01-01T12:00:00.000Z,指定請(qǐng)求必須發(fā)生在2018年1月1日12點(diǎn)前。
    {
      "expiration": "2018-01-01T12:00:00.000Z",
      "conditions": [
          ["content-length-range", 0, 104857600]
      ]
    }
  • Post Policy支持的限定條件(Conditions)如下所示。
    名稱 描述 示例
    Bucket 上傳文件的Bucket名稱。支持精確匹配方式。 {“bucket”: “johnsmith” } 或 [“eq”, “$bucket”, “johnsmith”]
    Key 上傳文件的名稱。支持精確匹配和前綴匹配方式。 [“starts-with”, “$key”, “user/etc/”]
    content-length-range 上傳文件允許的最小、最大長(zhǎng)度。 [“content-length-range”, 0, 104857600]
    x-oss-meta-* 指定的Object meta。支持精確匹配和前綴匹配方式。 [“starts-with”, “$x-oss-meta-prop”, “prop-“]
    success_action_redirect 上傳成功后的跳轉(zhuǎn)URL地址。支持精確匹配和前綴匹配方式。 [“starts-with”, “$success_action_redirect”, “http://www.aliyun.com”]
    success_action_status 未指定success_action_redirect時(shí),上傳成功后的返回狀態(tài)碼。支持精確匹配和前綴匹配方式。 [“eq”, “$success_action_status”, “204”]
    Cache-Control, Content-Type, Content-Disposition, Content-Encoding, Expires等 HTTP請(qǐng)求頭,作為表單域傳遞。支持精確匹配和前綴匹配方式。 [“eq”, “$Content-Encoding”, “ZLIB”]
  • Post Policy有以下轉(zhuǎn)義字符,使用\轉(zhuǎn)義。
    轉(zhuǎn)義字符 描述
    \/ 斜杠
    \ 反斜杠
    \” 雙引號(hào)
    \$ 美元符
    \b 空格
    \f 換頁(yè)
    \n 換行
    \r 回車
    \t 水平制表符
    \uxxxx Unicode字符
  • Post Policy更詳細(xì)的說(shuō)明,請(qǐng)參見(jiàn)Post Policy

PostObject的簽名

  • 對(duì)于驗(yàn)證的Post請(qǐng)求,請(qǐng)求中必須包含AccessKeyID、Policy、Signature表單域。計(jì)算簽名的流程如下。
    • 創(chuàng)建一個(gè)UTF-8編碼的Policy。
    • 將Policy進(jìn)行base64編碼,其值即為Policy表單域該填入的值,并將該值作為將要簽名的字符串。
    • 使用AccessKeySecret對(duì)要簽名的字符串進(jìn)行簽名,先用hmac-sha1哈希,再base64編碼,簽名方法與Header簽名的方法相同,如下所示。
      Signature = base64(hmac-sha1(AccessKeySecret, base64(policy)))
      計(jì)算出的簽名在表單域Signature中指定,如下所示。
      Content-Disposition: form-data; name="Signature"
      {signature}
      --9431149156168
  • 如果您還有疑問(wèn),請(qǐng)參考示例代碼:

PostObject簡(jiǎn)介

PostObject用于通過(guò)HTML表單上傳的方式將文件(Object)上傳至指定存儲(chǔ)空間(Bucket)。PostObject的消息實(shí)體通過(guò)多重表單格式(multipart/form-data)編碼,在PutObject操作中參數(shù)通過(guò)HTTP請(qǐng)求頭傳遞,在PostObject操作中則作為消息體中的表單域傳遞。詳細(xì)說(shuō)明請(qǐng)參見(jiàn)RFC 2388。PostObject消息包括消息頭(Header)和消息體(Body)。Header和Body之間由\r\n--{boundary}分割。Body由一系列的表單域構(gòu)成,表單域格式如下所示。

Content-Disposition: form-data; name="{key}"\r\n\r\n{value}\r\n--{boundary}

常見(jiàn)的Header有Host、User-Agent、Content-Length、Content-Type、Content-MD5等,表單域字段有Key、OSSAccessKeyId、Signature、Content-Disposition、object meta(x-oss-meta-*)、x-oss-security-token、其它HTTP Header(Cache-Control、Content-Type、Cache-Control、Content-Type、Content-Disposition、Content-Encoding、Expires、Content-Encoding、Expires)、file等。表單域中file必須是最后一個(gè)域。更多關(guān)于PostObject的介紹請(qǐng)參見(jiàn)PostObject

相關(guān)文檔

適用于

  • 對(duì)象存儲(chǔ)OSS