我正在尝试在express.js中处理带有大参数的GET请求。 我正在使用Express 4.14.0在docker-container中运行节点8'carbon'。
requestURI总共有9971个字节。
例如http://somedomain.com/path?param1=dfsgbdg¶m2=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;
答案 0 :(得分:0)
请求的标头+ URI不得超过80 kb。 另外,如果您要从浏览器访问此URL,则大多数浏览器会施加2083个字符的限制。如果要添加更多参数,可能会成为瓶颈。
我认为将其转换为post方法应该是一个不错的选择