AWS预签名PUT URL需要&;以&;amp;?

AWS预签名PUT URL需要&;以&;amp;?,url,amazon-web-services,amazon-s3,Url,Amazon Web Services,Amazon S3,我有一个服务,可以生成S3预签名的PUT URL进行上传 在测试过程中,我注意到只要我在“漂亮”模式下点击URL,邮递员就可以上传到预先签名的URL。这将把URL放在地址栏中 但是,当我复制原始输出时,每次都是403 AWS S3是否要求将标志替换为 编辑:更新以显示如何使用Node/Express/AWS API获取预签名URL router.get('/', function (req, res) { var s3 = new AWS.S3(); var params = {

我有一个服务,可以生成S3预签名的PUT URL进行上传

在测试过程中,我注意到只要我在“漂亮”模式下点击URL,邮递员就可以上传到预先签名的URL。这将把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});
    });
});


不,你不应该用html编码
&
→ <代码>&

听起来好像你的服务正在生成URL,或者它,或者链中的某个东西,对它们进行了错误的html编码,幸运的是,当你在“漂亮”模式下查看它们时,邮递员或浏览器正在重新清理它们


如果你故意这么做,那么不要。。。但是,如果您不清楚虚假编码来自何处,那么与基于浏览器的工具相比,切换到基于文本的工具(如curl或wget)来与您的服务对话可能会让您更接近于了解正在发生的事情。

我已经仔细检查了获取预签名url的代码。据我所知,没有什么奇怪的事情发生。获取s3预签名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});});我在PostMan和编程方面仍然得到相同的行为。@binarygiant您是说当您从命令行使用
curl
时,您仍然会看到
&在响应中,即使您不是故意添加它?