Я пытаюсь загрузить файл с помощью почтальона. Я прикрепил файл, нажав «тело» (в почтальоне) -> двоичный файл -> выбрать файл. Я использую S3 для загрузки с предварительно подписанными URL-адресами. В URL имя файла точно такое же, как и имя файла, который я выбираю в почтальоне. При выполнении запроса я получаю сообщение об ошибке:
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>
<AWSAccessKeyId>...</AWSAccessKeyId>
<StringToSign>PUT
text/plain
1551977056
x-amz-acl:private
/wiivv-staging-private-storage/measurement/6506684788010901504/1551405460831/topLeft-2.jpeg</StringToSign>
<SignatureProvided>...</SignatureProvided>
<StringToSignBytes>...</StringToSignBytes>
<RequestId>DB2FC5FE064CF49A</RequestId>
<HostId>zbsLj7mcuXJa8D9JX1jFN1Lo+lI02/EvJreAXmPQjPezmU1sucQamXuqlGoUBzAq3nAaejx3doA=</HostId>
</Error>
Однако, экспортируя запрос почтальона (нажав «код»), чтобы получить команду curl, я получаю:
curl -X PUT \
'[s3-presigned-url]' \
-H 'Postman-Token: 84700b0d-0cd2-4de5-b52c-7de39a12253e' \
-H 'cache-control: no-cache'
И добавление дополнительной опции для загрузки файла:
curl -X PUT \
'[s3-presigned-url]' \
-H 'Postman-Token: 84700b0d-0cd2-4de5-b52c-7de39a12253e' \
-H 'cache-control: no-cache'
--upload-file ~/topLeft-2.jpeg
это сработало!
В итоге, в почтальоне он не работает и тот же запрос экспортируется в curl с добавлением опции --upload-file
, он работает ...
Как заставить запрос работать с почтальоном?
РЕДАКТИРОВАТЬ 1:
Похоже, это связано с ошибкой https://github.com/postmanlabs/postman-app-support/issues/2521, когда почтальон автоматически добавляет заголовок Content-Type: text/plain
, даже если заголовки не были предоставлены.
РЕДАКТИРОВАТЬ 2:
здесь снимок экрана консоли почтальона. Видите нежелательный заголовок content-type
?
Но вы не сможете увидеть этот заголовок, если переключите вывод Pretty
:
РЕДАКТИРОВАТЬ 3:
используя "content-type: multipart / form-data", я получаю
PUT /measurement/6506684788010901504/1551405460831/topLeft-2.jpeg?AWSAccessKeyId=AKIAIKNR3HJGZI24MDTQ&Expires=1554393626&Signature=OaqaUqB2%2B3jp2AH97aWKujV3ZD8%3D&x-amz-acl=private
Content-Type: multipart/form-data; boundary=--------------------------092560820091438222667657
cache-control: no-cache
Postman-Token: e45247b4-0fc4-4adb-8e7b-effb82dc8e73
User-Agent: PostmanRuntime/7.6.1
Accept: */*
Host: wiivv-staging-private-storage.s3.amazonaws.com
accept-encoding: gzip, deflate
content-length: 199703
name=topLeft-2.jpegfilename=[object Object]
HTTP/1.1 403
status: 403
x-amz-request-id: 640967A618ABD4A0
x-amz-id-2: IVZtpEDxEEo0R7JaQWrsOi8/6UESbKH4dZNWDnwJDJBhv1ppZx56cvMPt6xT4ZJ3qWiFernsu54=
Content-Type: application/xml
Transfer-Encoding: chunked
Date: Thu, 04 Apr 2019 15:58:34 GMT
Connection: close
Server: AmazonS3
<?xml version="1.0" encoding="UTF-8"?> <Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message><AWSAccessKeyId>AKIAIKNR3HJGZI24MDTQ</AWSAccessKeyId><StringToSign>PUT multipart/form-data; boundary=--------------------------092560820091438222667657 1554393626 x-amz-acl:private /wiivv-staging-private-storage/measurement/6506684788010901504/1551405460831/topLeft-2.jpeg</StringToSign><SignatureProvided>OaqaUqB2+3jp2AH97aWKujV3ZD8=</SignatureProvided><StringToSignBytes>50 55 54 0a 0a 6d 75 6c 74 69 70 61 72 74 2f 66 6f 72 6d 2d 64 61 74 61 3b 20 62 6f 75 6e 64 61 72 79 3d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 30 39 32 35 36 30 38 32 30 30 39 31 34 33 38 32 32 32 36 36 37 36 35 37 0a 31 35 35 34 33 39 33 36 32 36 0a 78 2d 61 6d 7a 2d 61 63 6c 3a 70 72 69 76 61 74 65 0a 2f 77 69 69 76 76 2d 73 74 61 67 69 6e 67 2d 70 72 69 76 61 74 65 2d 73 74 6f 72 61 67 65 2f 6d 65 61 73 75 72 65 6d 65 6e 74 2f 36 35 30 36 36 38 34 37 38 38 30 31 30 39 30 31 35 30 34 2f 31 35 35 31 34 30 35 34 36 30 38 33 31 2f 74 6f 70 4c 65 66 74 2d 32 2e 6a 70 65 67</StringToSignBytes><RequestId>640967A618ABD4A0</RequestId><HostId>IVZtpEDxEEo0R7JaQWrsOi8/6UESbKH4dZNWDnwJDJBhv1ppZx56cvMPt6xT4ZJ3qWiFernsu54=</HostId></Error>