2014-12-11 2 views
1

У меня есть служба, которая генерирует S3 предварительно подписанные URL-адреса PUT для загрузки.AWS Предварительно подписанный URL-адрес PUT Требует & s для замены с &?

Во время тестирования я заметил, что почтальон не будет загружать тему на предварительно подписанный URL-адрес, пока я нажимаю на URL-адрес в режиме «Довольно». Это поместило бы URL-адрес в адресную строку.

Но когда я скопировал исходный вывод, он будет 403 каждый раз.

ли AWS S3 требуют & знаки должны быть заменены &?

EDIT: Обновление, чтобы показать, как предварительно подписанный URL извлекается с Node/Экспресс/AWS API

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

ответ

0

Нет, вы не должны HTML-кодирование && в строке запроса разделителей в качестве S3 подписали URL.

Похоже, что ваша служба генерирует URL-адреса, а либо она, или что-то в цепочке, неправильно кодирует их html, и, к счастью, почтальон или браузер очищают их снова, когда вы просматриваете их в " симпатичный "режим.

Если вы намеренно делаете это, то не делайте этого ... но если вы неясны, откуда исходит ложная кодировка, переход на текстовый инструмент для разговора с вашим сервисом - например, curl или wget - скорее всего, приблизит вас к пониманию того, что происходит, чем инструмент, основанный на браузере.

+0

Я дважды проверил свой код для получения предварительно подписанного URL-адреса. Из того, что я могу сказать, нет ничего странного. код, чтобы захватить s3 предварительно подписанный URL: router.get ('/', функция (Req, Рез) { вар s3 = новый AWS.S3(); вар Params = {Ковш: «some- s3-bucket ', Key:' test/'}; s3.getSignedUrl (' putObject ', params, function (err, url) { res.json ({url: url}); }); }) ; – binarygiant

+0

Я по-прежнему получаю такое же поведение в PostMan и программно. – binarygiant

+0

@binarygiant вы говорите, что вы используете 'curl' из командной строки, вы все еще видите' & 'в ответе, даже если вы не намеренно добавляете его? –

Смежные вопросы