nodejs / expressjs在大requestURI上发送空响应

时间:2018-12-05 21:22:20

标签: node.js express get

我正在尝试在express.js中处理带有大参数的GET请求。 我正在使用Express 4.14.0在docker-container中运行节点8'carbon'。

requestURI总共有9971个字节。

例如http://somedomain.com/path?param1=dfsgbdg&param2=verrylargeparam

卷曲响应: curl:(52)来自服务器的空回复

如果我将尺寸减小到8k以下,一切都很好。

节点或表达式中是否有硬限制可以解释此行为? 我可以增加限额吗? (不是正文,requestURI) 我需要切换到POST吗?

预先感谢

c

这是我的通用设置

let router = express();

var bodyParser = require('body-parser');
app.use(bodyParser.json({limit: '50mb'}));
app.use(bodyParser.urlencoded({limit: '50mb', extended: true, parameterLimit: 10000000000}));

router.use(compression());

router.use(function (req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Headers', 'X-Requested-With');
    res.header('Access-Control-Allow-Headers', 'Content-type');
    res.header('Access-Control-Allow-Methods', 'GET,POST,OPTIONS');
    next();
});


router.get('/my/get/route', myExecFunction);
router.use(another);
router.use(another);
router.use(another);
router.use(another);
router.use(another);
router.use(another);
router.use(another);
router.use(another);
router.use(another);


router.enable('trust proxy');

router.listen(process.env.HTTP_PORT);
logger.info(`Running on http://localhost:${process.env.HTTP_PORT}`);

export default router;

1 个答案:

答案 0 :(得分:0)

请求的标头+ URI不得超过80 kb。 另外,如果您要从浏览器访问此URL,则大多数浏览器会施加2083个字符的限制。如果要添加更多参数,可能会成为瓶颈。

我认为将其转换为post方法应该是一个不错的选择