問題の説明
PostObject リクエストの Content-Type ヘッダーが無効です。
原因
PostObject リクエストを開始しました。ただし、リクエストの Content-Type ヘッダーが無効です。Content-Type ヘッダーは multipart/form-data; boundary={boundary} 形式である必要があります。
例
Content-Type ヘッダーが multipart/form-data; に設定されているため、エラーが返されます。Content-Type ヘッダーは multipart/form-data; boundary={boundary} 形式である必要があります。
POST / HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Content-Length: 6443500495
Date: Sat, 18 Feb 2023 05:17:02 GMT
Content-Type: multipart/form-data;
Host: example-bucket.oss-cn-hangzhou.aliyuncs.com
------WebKitFormBoundaryW0DET1iaBMeAOBg3
Content-Disposition: form-data; name="name"
big.img
------WebKitFormBoundaryW0DET1iaBMeAOBg3
Content-Disposition: form-data; name="key"
${filename}
------WebKitFormBoundaryW0DET1iaBMeAOBg3
Content-Disposition: form-data; name="policy"
eyJleHBpcmF0aW9uIjoiMjAyMy0wMi0xOFQxMzoxOTowMC4wMDBaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMTA0ODU3NjAwMF1dfQ==
------WebKitFormBoundaryW0DET1iaBMeAOBg3
Content-Disposition: form-data; name="OSSAccessKeyId"
LTAI****************
------WebKitFormBoundaryW0DET1iaBMeAOBg3
Content-Disposition: form-data; name="success_action_status"
200
------WebKitFormBoundaryW0DET1iaBMeAOBg3
Content-Disposition: form-data; name="signature"
miAo****************
------WebKitFormBoundaryW0DET1iaBMeAOBg3
Content-Disposition: form-data; name="file"; filename="big.img"
Content-Type: application/octet-stream
***
------WebKitFormBoundaryW0DET1iaBMeAOBg3--解決策
PostObject リクエストの Content-Type ヘッダーは、アップロードするオブジェクトのタイプと Web ページのエンコード形式を指定し、ブラウザがオブジェクトを読み取ってエンコードする方法を決定します。PostObject リクエストで送信されるフォームは、multipart/form-data 形式でエンコードする必要があります。Content-Type ヘッダーは multipart/form-data;boundary=xxxxxx 形式である必要があります。
この形式では、boundary はフォームによってランダムに生成される境界文字列です。境界文字列を指定する必要はありません。OSS SDK を使用してフォームを作成する場合、SDK もランダムな境界文字列を生成します。PostObject リクエストの Content-Type ヘッダーが有効であることを確認してください。
参照
PostObject 操作の詳細については、「PostObject」をご参照ください。
フォームアップロードを使用して Web クライアントから OSS にデータを転送する方法については、「JavaScript を使用してクライアントに署名を追加し、OSS にデータをアップロードする」をご参照ください。
PostObject 操作の一般的なエラーとトラブルシューティング方法については、「PostObject のエラーとトラブルシューティング方法」をご参照ください。