NodeSSPI 2-минутный тайм-аут на посту - PullRequest
0 голосов
/ 14 сентября 2018

Когда я отправляю запрос на свой сервер, у меня нет проблем, но когда я выполняю POST, у меня запускается тайм-аут сервера.(2 минуты по умолчанию, но если я добавлю server.setTimeout (15000), я получу 15-секундную задержку.) Как только сервер отключится, процесс завершится, как и ожидалось.Интересно, если я добавлю console.log (res) перед res.finished ||next () задержка исчезает.

post.html:

<form action="http://localhost:3000" method="post">
    <input type="text" name="user[name]">
    <input type="text" name="user[email]">
    <input type="submit" value="Submit">
</form>

test.js:

'use strict'

var express = require('express')
var app = express()
var server = require('http').createServer(app)
//server.setTimeout(15000);
const bodyParser = require("body-parser");

app.use(function (req, res, next) {
  var nodeSSPI = require('node-sspi')
  var nodeSSPIObj = new nodeSSPI({
    retrieveGroups: true
  })
  nodeSSPIObj.authenticate(req, res, function(err){
    //console.log(res);
    res.finished || next()
  })
})
app.use(bodyParser.urlencoded({
            extended: true
}));

app.use(bodyParser.json());

app.post("/", function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.write("<html>");
  res.write("<body>");
  res.write("<h1>My Header</h1>");
  res.write("<p>My paragraph.</p>");
  res.write("<p>Name = " + req.body.user.name + "</p>");
  res.write("<p>Email = " + req.body.user.email + "</p>");
  res.write("</body>");
  res.write("</html>");
  res.end();
  console.log('End post');
});

// Start server
var port = process.env.PORT || 3000
server.listen(port, function () {
  console.log('Express server listening on port %d in %s mode', port, app.get('env'))
})

1 Ответ

0 голосов
/ 20 сентября 2018

Оказывается, проблема ушла, когда я переупорядочил маршрутизацию, чтобы поместить строки bodyParser над проверкой nodeSSPI.

В частности, я переместил эти строки:

app.use(bodyParser.urlencoded({
            extended: true
}));

app.use(bodyParser.json());

Выше:

app.use(function (req, res, next) {
  var nodeSSPI = require('node-sspi');
  var nodeSSPIObj = new nodeSSPI({
    retrieveGroups: false
  });

  nodeSSPIObj.authenticate(req, res, function(err){
    res.finished || next();
  });
});
...