传递编码参数时的AWS EB路由问题

时间:2019-05-23 04:39:41

标签: node.js amazon-web-services express amazon-elastic-beanstalk

我有一条路由通过req.params app.get('/someroute/:val' => res.send(req.params.val))传递值。此值实际上是已编码的URL。

我通过本地主机访问此路由没有问题。但是,当我将其部署到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 :(得分:0)

添加一些调试信息以输出aws s3 sync s3://dev-bucket/ s3://prod-bucket/ --sse-c-copy-source AES256 --sse-c-copy-source-key 'dev-account-customer-managed-key' 的值,然后保证检查是否符合您的期望。

由于您认为它更可靠,建议您使用decodeURIComponent而不是decodeURI。在Elastic Beanstalk中,URI解码有可能以未转义的字符结尾,从而给出了格式错误的URI,从而导致404。

uri

如果您要进行编码,则还应该使用encodeURIComponent而不是encodeURI。