当路由器获得编码 URL 时,NodeJS Express 服务器崩溃
NodeJS Express Server crashes when router gets an encoded URL
我有一个 NodeJS 和一个处理 get 请求的 API。
...
var apiRoutes = express.Router();
apiRoutes.get("/filter/:name",function(req, res){
// do something
res.json(result);
}
app.use('/api', apiRoutes);
然后在客户端(不是重要信息但是是Angular2):
find(name:string): void{
name.trim();
this.http.get(encodeURI('http://server_address/api/filter/' + name))...
它适用于不包含空格等的参数。为了使其也适用于间隔输入,我使用了 encodeURI
函数。但是,当我用空格输入时,服务器给出错误:
undefined:0
^
SyntaxError: Unexpected end of input
at Object.parse (native)
at IncomingMessage.<anonymous> (/user/home/server/server.js:65:28)
at IncomingMessage.EventEmitter.emit (events.js:117:20)
at _stream_readable.js:920:16
at process._tickCallback (node.js:415:13)
知道我能做些什么来解决它吗?
我想通了。我在做类似的事情:
apiRoutes.get("/filter/:name",function(req, res){
http.request(anotherURL + req.body.name)...
}
并认为 name
参数已经编码,因为它是在客户端编码的。但是我看到我必须再次在服务器中对其进行编码。
apiRoutes.get("/filter/:name",function(req, res){
http.request(anotherURL + encodeURI(req.body.name))...
}
我有一个 NodeJS 和一个处理 get 请求的 API。
...
var apiRoutes = express.Router();
apiRoutes.get("/filter/:name",function(req, res){
// do something
res.json(result);
}
app.use('/api', apiRoutes);
然后在客户端(不是重要信息但是是Angular2):
find(name:string): void{
name.trim();
this.http.get(encodeURI('http://server_address/api/filter/' + name))...
它适用于不包含空格等的参数。为了使其也适用于间隔输入,我使用了 encodeURI
函数。但是,当我用空格输入时,服务器给出错误:
undefined:0
^
SyntaxError: Unexpected end of input
at Object.parse (native)
at IncomingMessage.<anonymous> (/user/home/server/server.js:65:28)
at IncomingMessage.EventEmitter.emit (events.js:117:20)
at _stream_readable.js:920:16
at process._tickCallback (node.js:415:13)
知道我能做些什么来解决它吗?
我想通了。我在做类似的事情:
apiRoutes.get("/filter/:name",function(req, res){
http.request(anotherURL + req.body.name)...
}
并认为 name
参数已经编码,因为它是在客户端编码的。但是我看到我必须再次在服务器中对其进行编码。
apiRoutes.get("/filter/:name",function(req, res){
http.request(anotherURL + encodeURI(req.body.name))...
}