Я размещаю приложение node.js в веб-приложении Azure. Это работает хорошо, за исключением того, что сервер всегда возвращает HTTP 400, если запрос слишком длинный (т. Е. Длинный URL или много заголовков).
Кажется, что ошибка возвращается шлюзом Kestrel, не доходя до моего приложения, и это происходит, если длина запроса превышает 2581 байт. Та же проблема не возникает при локальном запуске. Это запрос GET, и не имеет значения, является ли URL длинным или длинные заголовки.
Мое приложение просто возвращает текущее время:
// Module dependencies
let http = require('http');
http.createServer(function (request, response) {
console.log('request ', request.url);
response.write("Request served at " + new Date().toISOString());
response.end();
}).listen(80);
Если я запрашиваю GET /anything
ответ будет таким, как ожидалось. Однако, если я сделаю GET /{any_very_long_path}
(или включу заголовок с длинным значением), это не получится
Почему Azure ограничивает длину запроса следующим образом? Та же проблема не возникает при размещении приложения ASP.NET.