gpt4 book ai didi

javascript - AWS S3 getSignedUrl() 返回过期的 SignedURL

转载 作者:行者123 更新时间:2023-12-05 06:42:27 26 4
gpt4 key购买 nike

localhost 上工作正常,但在服务器上不工作。所有返回的 URL 都已经过期

<Error>
<Code>AccessDenied</Code>
<Message>Request has expired</Message>
<Expires>2016-04-26T09:44:22Z</Expires><ServerTime>2016-04-26T11:34:36Z</ServerTime><RequestId>33AF4E321F37ADA6</RequestId><HostId>+AXA3itXG9aKlt+EQkYxTHJCsxkEkymj+o2COPYo4+v26Vaxx17j/agh+hCq5NoHNzvJp2GI8Y=</HostId>
</Error>

localhost 上,为同一对象生成的 URL 在 expires 参数上不同,但在服务器上没有。服务器上的相同对象返回相同的 URL(expires 参数每次都相同)。

服务器是 Amazon EC2。凭据保存在 localhost 和服务器上的 /.aws/credentials 文件中

来自模型的代码

var AWS = require('aws-sdk');
var s3 = new AWS.S3();

exports.download = function (req, res) {

var fileName = req.params.name;

var key = req.user._id + '/' + fileName;

var params = { Bucket: 'myBucket', Key: key };

s3.getSignedUrl('getObject', params, function (err, url) {

if (err) {
console.log('Getting Signed URL', err);
res.send(err);
} else {
console.log('Getting Signed URL', url);
res.send(url);
}
});
};

在 S3 上编辑 CORS 配置

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>

最佳答案

...
// here you need to provide signed URL expiration time as the 3rd parameter
var params = { Bucket: 'myBucket', Key: key , Expires: <expire time>};

s3.getSignedUrl('getObject', params, function (err, url) {
...

关于javascript - AWS S3 getSignedUrl() 返回过期的 SignedURL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37109534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com