【问题标题】:NodeSSPI 2 Minute Timeout on Post发布时 NodeSSPI 2 分钟超时
【发布时间】:2018-09-14 15:56:25
【问题描述】:

当我向我的服务器发送请求时,我没有问题,但是当我 POST 时,我遇到了服务器超时。 (默认为 2 分钟,但如果我添加 server.setTimeout(15000) 我会延迟 15 秒。)一旦服务器超时,该过程就会按预期完成。有趣的是,如果我在 res.finished || 之前添加一个 console.log(res) 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'))
})

【问题讨论】:

    标签: node.js sspi


    【解决方案1】:

    事实证明,当我重新排序路由以将 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();
      });
    });
    

    【讨论】:

      猜你喜欢
      • 2018-01-25
      • 2022-01-18
      • 2019-06-08
      • 2016-05-07
      • 1970-01-01
      • 2021-07-09
      • 2023-01-26
      • 1970-01-01
      • 2016-09-13
      相关资源
      最近更新 更多