問題の説明
Callback パラメーターの値をサーバーサイドで Base64 デコードできません。
原因
Callback パラメーターの値は、Base64 でエンコードされた JSON 文字列である必要があります。 この要件は、パラメーターが使用される以下の 3 つのすべての箇所に適用されます。
| 場所 | パラメーター | 必須フォーマット |
|---|---|---|
| URL クエリ文字列 | Callback | Base64 エンコードされた JSON 文字列 |
| リクエストヘッダー | x-oss-callback | Base64 エンコードされた JSON 文字列 |
| POST フォームフィールド | callback | Base64 エンコードされた JSON 文字列 |
サーバーがこれらのいずれかの場所で値を Base64 デコードできない場合、OSS はこのエラーを返します。
例
次のリクエストは、x-oss-callback が有効な Base64 エンコードされた JSON 文字列ではない x123-*& に設定されているため、エラーをトリガーします。
PUT /test.txt HTTP/1.1
Host: callback-test.oss-cn-hanghzou.aliyuncs.com
Content-Length: 4
x-oss-callback-var: eyJ4Om15X3ZhciI6ImZvci1jYWxsYmFjay10ZXN****=
x-oss-callback: x123-*&
Date: Sun, 19 Feb 2023 09:42:14 GMT
Content-Type: text/plain
Authorization: OSS qn6q**************:77Dv****************
Testソリューション
Callback パラメーターを有効な Base64 エンコードされた JSON 文字列に設定してください。 必須の JSON 構造と値の構築方法については、「コールバック」をご参照ください。
参照
アップロードコールバックの仕組みと使用方法については、「アップロードコールバック」および「コールバック」をご参照ください。
一般的なアップロードコールバックのエラーとその原因については、「アップロードコールバックのエラーとトラブルシューティング」をご参照ください。
サーバーから署名情報を取得し、コールバックのアップロードを設定し、POST ポリシーを使用したフォームアップロードで OSS に直接アップロードする方法については、「概要」をご参照ください。
モバイルアプリの直接データ転送とアップロードコールバックを設定する方法については、「モバイルアプリのアップロードコールバックの設定」をご参照ください。