nodejs / expressjs отправляет пустой ответ на большой requestURI - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь обработать запрос GET с большими параметрами в файле express.js.Я запускаю узел 8 'carbon' в Docker-контейнере с экспрессом 4.14.0.

В общей сложности requestURI имеет 9971 байт.

например http://somedomain.com/path?param1=dfsgbdg&param2=verrylargeparam

curl response: curl: (52) Пустой ответ от сервера

Если я уменьшу размер до 8k, все будет хорошо.

Существует ли жесткое ограничение в узле или выражении, которое может объяснить такое поведение?Могу ли я увеличить лимит?(не body, 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 голосов
/ 06 декабря 2018

Запрашиваемые заголовки + URI не должны превышать 80 кб.Кроме того, если вы обращаетесь к этому URL-адресу из браузера, существует ограничение в 2083 символа, которое навязывает большинство браузеров;который может стать узким местом позже, если вы добавите больше параметров.

Преобразование в метод post должно быть хорошим вариантом, я думаю

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...