【发布时间】:2015-10-09 10:45:21
【问题描述】:
我正在尝试向 amazonS3 预签名 URL 发送 PUT 请求。即使我只有一个 PUT 请求,我的请求似乎也被调用了两次。第一个请求返回200 OK,第二个请求返回400 Bad Request。
这是我的代码:
var req = {
method: 'PUT',
url: presignedUrl,
headers: {
'Content-Type': 'text/csv'
},
data: <some file in base64 format>
};
$http(req).success(function(result) {
console.log('SUCCESS!');
}).error(function(error) {
console.log('FAILED!', error);
});
400 Bad Request 错误更详细:
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>InvalidArgument</Code>
<Message>Only one auth mechanism allowed; only the X-Amz-Algorithm query parameter, Signature query string parameter or the Authorization header should be specified</Message>
<ArgumentName>Authorization</ArgumentName>
<ArgumentValue>Bearer someToken</ArgumentValue>
<RequestId>someRequestId</RequestId>
<HostId>someHostId</HostId>
</Error>
我不明白的是,为什么它返回 400?以及解决方法是什么?
【问题讨论】:
-
我会调查为什么它被调用两次,因为第一次看起来工作正常
-
你找到解决办法了吗?
-
如果您想调用 s3 url,只需在调用之前删除您在应用中用于任何其他 API 的所有授权标头。