Когда я пытаюсь удалить Объект в моем Bucket с помощью Chrome, он работает отлично. Когда я пытаюсь использовать Safari, я получаю эту ошибку: The Content-MD5 you specified did not match what we received.
Это строка curl
из Chrome:
curl 'https://mybucket.s3.cloud/?delete' -H 'Connection: keep-alive' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache' -H 'X-Amz-User-Agent: aws-sdk-js/2.631.0 promise' -H 'Content-MD5: b0reU5O4x/fCQnk/W2oH4w==' -H 'Authorization: OK_STRING, SignedHeaders=content-md5;host;x-amz-content-sha256;x-amz-date;x-amz-user-agent, Signature=OK_STRING' -H 'Content-Type: application/octet-stream; charset=UTF-8' -H 'X-Amz-Content-Sha256: UNSIGNED-PAYLOAD' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36' -H 'Sec-Fetch-Dest: empty' -H 'X-Amz-Date: 20200304T171137Z' -H 'Accept: */*' -H 'Origin: http://localhost:9000' -H 'Sec-Fetch-Site: cross-site' -H 'Sec-Fetch-Mode: cors' -H 'Referer: http://localhost:9000/myurl/explorer' -H 'Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7' --data-binary '<Delete xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Object><Key>Capture d’écran 2020-03-03 à 17.46.22.png</Key></Object></Delete>' --compressed
Теперь это тот же файл и то же действие с Safari:
curl 'https://mybucket.s3.cloud/?delete' \
-XPOST \
-H 'Content-Type: application/octet-stream; charset=UTF-8' \
-H 'Accept: */*' \
-H 'Authorization: OK_STRING, SignedHeaders=content-md5;host;x-amz-content-sha256;x-amz-date;x-amz-user-agent, Signature=OK_STRING' \
-H 'Accept-Language: fr-fr' \
-H 'Accept-Encoding: gzip, deflate, br' \
-H 'Host: mybucket.s3.cloud' \
-H 'Origin: http://localhost:9000' \
-H 'Content-Length: 138' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15' \
-H 'Referer: http://localhost:9000/' \
-H 'Connection: keep-alive' \
-H 'Content-MD5: b0reU5O4x/fCQnk/W2oH4w==' \
-H 'X-Amz-Date: 20200304T170853Z' \
-H 'X-Amz-User-Agent: aws-sdk-js/2.631.0 promise' \
-H 'X-Amz-Content-Sha256: UNSIGNED-PAYLOAD' \
--data-binary $'<Delete xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Object><Key>Capture d\u2019\xe9cran 2020-03-03 \xe0 17.46.22.png</Key></Object></Delete>'
Код, генерирующий эти вызовы:
s3({
method: 'deleteObject',
region: bucket.region,
params: {
Bucket: bucket.id,
Key: file.Key,
VersionId: file.VersionId,
},
})
s3
являющийся экземпляром 'aws -sdk / clients / s3'
Кто-нибудь имеет представление о том, что может go не так? Похоже, Safari кодирует мое имя файла в соответствии с data-binary
. Почему? Как я могу предотвратить это? или заставить его везде?