AWS预先签名的PUT URL要求& s替换为&?

时间:2014-12-11 20:22:18

标签: url amazon-web-services amazon-s3

我有一个服务可以生成S3预先签名的PUT URL以供上传。

在测试过程中,我注意到Postman只要点击"漂亮"中的网址就没有问题上传到预先签名的网址。模式。这会将URL放在地址栏中。

但是当我复制原始输出时,每次都会有403次。

AWS S3是否需要&用&?

替换的标志

编辑:更新以显示如何使用Node / Express / AWS API获取预签名的URL

router.get('/', function (req, res) {
    var s3 = new AWS.S3();
    var params = {Bucket: 'some-s3-bucket', Key: 'test/'};
    s3.getSignedUrl('putObject', params, function (err, url) {
        res.json({url: url});
    });
});

This URL would produce a 403

Clicking on this replaces the & in the URL to &

This URL would work

1 个答案:

答案 0 :(得分:0)

不,您不应该在S3签名网址的查询字符串分隔符中对&&进行html编码。

听起来你的服务正在生成网址,或者它或链中的某些东西是不正确的html编码它们,运气好的话,邮递员或浏览器会在你查看它们时再次清理它们# 34;漂亮"模式。

如果您故意这样做,那么请不要......但如果您不清楚虚假编码的来源,请切换到基于文本的工具与您的服务进行通信 - - 比如curl或wget - 可能会让你更接近理解发生了什么,而不是基于浏览器的工具。