将Node.js与Express一起使用,如何接受URL作为参数?
即https://bugs.eclipse.org/bugs/show_bug.cgi?id=179924
我有以下处理程序
app.get('/site/:dest', function (req, res, next) {
res.end('URL = ' + req.params.dest);
});
而不是得到预期的响应我得到404:
在此未找到请求的网址/网站/ http://example.com/site/http%3A%2F%2Fgoogle.com 服务器
如果我请求example.com/site/hello,它可以正常工作,但不能传递URL。我假设它正在逃避导致问题的正斜线。
有没有正确的方法呢?
答案 0 :(得分:1)
您需要对参数的URL进行编码。如果您只是将URL作为参数发送,则会遇到很多问题。
最好的办法是url encode
参数,在你的nodejs方面你需要url decode
实施例:
https://www.google.com将为https%3A%2F%2Fwww.google.com
答案 1 :(得分:1)
这是一种解决方法:
更改了路由,现在使用req.query
app.get('/', function (req, res, next) {
res.end('URL = ' + req.query['site']);
});
现在,http://example.com/?site=http%3A%2F%2Fexample.com%2F%3Fhello%3Dworld%26foo%3Dbar按预期工作。
答案 2 :(得分:0)
对我有用
app.get('/site/*', function (req, res, next) {
res.end('URL = ' + req.params[0]);
});