Проблема с маршрутом AWS EB при передаче закодированного параметра - PullRequest
0 голосов
/ 23 мая 2019

У меня есть маршрут, который передает значение через req.params app.get('/someroute/:val' => res.send(req.params.val)).Это значение на самом деле является URL, который был закодирован.

У меня нет проблем при переходе по этому маршруту через localhost.Однако, когда я развертываю это в Elastic-Beanstalk и пробую маршрут, я получаю сообщение об ошибке 404, заявляющее, что этот маршрут не может быть найден.

Есть ли какая-то конфигурация, которую мне не хватает?

app.get('/someroute/:url', (req, res) => {
  let uri = decodeURI(req.params.url);
  Promise.all([reqFileOne.getRequest(), reqFileTwo.getRequest(uri)])
    .then(d => res.json(d));
});

Я хотел бы иметь возможность подключиться к маршруту и ​​получить ответ json, как это происходит на моей локальной машине.

На AWS Elastic-Beanstalk, я, к сожалению,получить 404.

1 Ответ

0 голосов
/ 23 мая 2019

Добавьте некоторую отладку для вывода значения uri перед обещанием проверить, что вы ожидаете.

Предлагаем вам использовать decodeURIComponent вместо decodeURI, так как он считается более надежным. В Elastic Beanstalk возможно, что декодирование URI заканчивается неэкранированными символами, дающими некорректный URI, что приводит к 404.

app.get('/someroute/:url', (req, res) => {
  let uri = decodeURIComponent(req.params.url);
  Promise.all([reqFileOne.getRequest(), reqFileTwo.getRequest(uri)])
.then(d => res.json(d));
});

Если вы выполняете кодирование, вы должны также использовать encodeURIComponent вместо encodeURI.

...