Несколько одновременных HTTP-запросов, возвращающих 400 неверных запросов - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть угловое приложение в узле, которое использует экспресс для маршрутизации различных HTTP-запросов.Впервые я столкнулся с этой проблемой, когда несколько пользователей пытались загружать файлы с помощью приложения одновременно.Сначала я подумал, что это проблема глобальных переменных области действия, которые сбрасывают данные перекрывающихся асинхронных / ожидающих запросов.

Однако я смог воспроизвести эту проблему («Не удалось загрузить ресурс: сервер ответил с состоянием 400») с помощью curl на тот же порт на localhost, который является маршрутом по умолчанию для получениязапрос.Я думал, что экспресс должен был иметь возможность обрабатывать несколько запросов HTTP?Вот мой код промежуточного программного обеспечения в app.js:

const PORT = 9001;
const express = require("express");
const bodyParser = require("body-parser");
const app = express();
const routes = require('./routes/routing');

app.use((req, res, next) => {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "*");
    res.header("Access-Control-Allow-Methods", "GET, HEAD, OPTIONS, POST, PUT, PATCH, DELETE");
    next();
});
app.use(bodyParser.json({limit: '20mb', extended: true}))
app.use(bodyParser.urlencoded({limit: '20mb', extended: true}))


routes.appRoutes(app);


app.get('/', function (req, res) {

    const example = [];

    for (i = 0; i < 1000; i++) {
        for (j = 0; j < 1000; j++) {
            example.push("test2");
        }
        example.push("test");
    }

    res.send(example);
});


app.all('*', function(req, res, next){
    res.send('Page not found.');
});

app.listen(PORT, () => {
    console.log("App is listening under the port: " + PORT);
});

, а вот мой routing.js:

const path = require("path");
const multer  = require('multer');
const { document } = require('./../controllers');

const diskStorage = multer.diskStorage({
  destination: function (req, file, callback) {
      callback(null, path.resolve("./server/uploads"))
  },
  filename: function (req, file, callback) {
      callback(null, file.originalname + '-' + Date.now() + ".csv")
  }
});
const uploadConfig = multer({
  storage: diskStorage,
});

const appRoutes = (app) => {
    app.post('/upload', uploadConfig.any(), document.upload);
    app.post('/process', document.process);
    app.get('/getFiles', document.getFiles);
    app.get('/getBatches/:fileId', document.getBatches);
};

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