問題描述
大量刪除操作缺少Content-MD5要求標頭。
問題原因
您發起了DeleteMultipleObjects請求,但是要求標頭中缺少Content-MD5要求標頭。
問題樣本
以下DeleteMultipleObjects請求中缺少必選的Content-MD5要求標頭。
POST /?delete HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Wed, 29 Feb 2012 12:26:16 GMT
Content-Length:151
Authorization: OSS qn6q**************:77Dv****************
<?xml version="1.0" encoding="UTF-8"?>
<Delete>
<Quiet>false</Quiet>
<Object>
<Key>multipart.data</Key>
</Object>
<Object>
<Key>test.jpg</Key>
</Object>
<Object>
<Key>demo.jpg</Key>
</Object>
</Delete>
解決方案
請求中添加Content-MD5要求標頭。
Content-MD5是一串由MD5演算法產生的值,該要求標頭用於檢查訊息內容是否與發送時一致。上傳了Content-MD5要求標頭後,OSS會計算訊息體的Content-MD5並檢查一致性。
Content-MD5計算方法為:
將
DeleteMultipleObjects
的請求訊息體經過MD5加密後得到一個128位位元組數組。將該位元組數組用base64演算法編碼,編碼後得到的字串即為Content-MD5欄位內容。
正確請求樣本如下:
POST /?delete HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Wed, 29 Feb 2012 12:26:16 GMT
Content-Length:151
Content-MD5: ohhnqLBJFiKkPSBO1eNaUA==
Authorization: OSS qn6q**************:77Dv****************
<?xml version="1.0" encoding="UTF-8"?>
<Delete>
<Quiet>false</Quiet>
<Object>
<Key>multipart.data</Key>
</Object>
<Object>
<Key>test.jpg</Key>
</Object>
<Object>
<Key>demo.jpg</Key>
</Object>
</Delete>