【发布时间】:2019-03-07 17:04:14
【问题描述】:
我正在尝试使用邮递员上传文件。我已通过单击“正文”(在邮递员中)-> 二进制-> 选择文件来附加文件。我使用 S3 上传带有预签名的网址。在url中,文件名和我在postman中选择的文件名一模一样。运行请求时,出现错误:
<?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: 使用“内容类型:多部分/表单数据”,我得到
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>
【问题讨论】: