我有前端反应和后端节点。我正在尝试从服务器向客户端发送已签名的AWS URL。奇怪的是,服务器显示正确的URL地址;它打印:
的https://*****.s3.amazonaws.com/abd160218_000.jpg AWSAccessKeyId = XXXX&安培;内容类型=图像%2Fjpeg&安培;过期= 1487035862&安培;签名= g6ti%2FN27Uw9O7ihThSr1G79nAmc%3D&安培; X-AMZ -acl =公共读
并发送回网址:
res.send({signedUrl: data});
但是,在客户端立即收到网址后,网址会显示:
HTTPS://******.dynamodb.us-east-1.amazonaws.com/abd1601...487037678&签名= wC6iKrTeaOYHyNW5QPoTE%2FzAZ10%3D&安培; X-AMZ-ACL =公共读
这让我很困惑。我从服务器获取带有axios的URL:
axios.get('/blogs/aws/getSignedAWSUrl', {
params: {
filename: el.file.name,
filetype: el.file.type
}
})
.then(function (result) {
//AWS s3 signed url returned from server.
var signedUrl = result.data.signedUrl;
console.log("Signed URl:", signedUrl);
var options = {
headers: {
'Content-Type': el.file.type,
}
};
axios.put(signedUrl, el.file, options);
})
这怎么会真的发生?我会很感激任何提示和想法。
** Update- node.js code
module.exports.getSignedAWSUrl = function(req, res){
var {filename, filetype} = req.query;
AWS.config.update({
accessKeyId: aws.ACCESS_KEY,
secretAccessKey: aws.SECRET_KEY,
});
var bucket = new AWS.S3();
var params = {
Bucket: 'mybucket',
Key: filename,
Expires: 60,
ContentType: filetype,
ACL: 'public-read',
};
bucket.getSignedUrl('putObject', params, function(err, data){
if(err){
console.log(err);
return err;
}
else{
console.log("Aws Signed URL:", data);
res.send({signedUrl: data});
}
});
}
答案 0 :(得分:1)
我终于想通了......
在我的索引页面中,我将配置我的AWS以从dynamoDB获取数据。然后,当我尝试发布新内容时,AWS配置将没有正确的端点。例如,如果您阅读我的AWS配置以获取签名的aws url,我不会更新端点;我所做的就是插入访问权限和密钥。
我已将其更新为@ getSignedUrl,AWS配置为
AWS.configure.update({
endpoint: "s3.amazonaws.com",
accessKeyID: aws.ACCESS_KEY,
secretAccessKey: aws.SECRET_KEY
});
对那些试图提供帮助的人表示歉意。你们不可能帮助提供我提供的信息,我不认为索引页面会导致问题。我很欣赏这些建议。
感谢。