首页 > 解决方案 > Node.js Express 在执行包含管道的查询字符串时发送 400 个请求

问题描述

当我发出包含(字符管道)的请求时,使用 Node12.0.0和 express时,它总是回答.4.16.4|400 bad request

这是一个示例服务器:

var express = require('express');

var app = express();

app.all('*', function(request, response, next) {
    console.log(request)
    next();
});

app.get('/search', function (request, response) {
    response.send("yeah!");
});

var server = app.listen(8000, function() {
    var host = server.address().address;
    var port = server.address().port;
    console.log('Server listening at http://%s:%s', host, port);
});

如果我执行像中间件没有日志这样的GET请求并被发送。http://localhost:8000/search?q=|400 bad request

我需要使用管道处理请求以保留旧 URL。我该如何解决?

标签: javascriptnode.jsexpressget

解决方案


您现在可以使用--http-parser=legacy来解决此问题。

node --http-parser=legacy index.js

URL 包含管道字符|


推荐阅读