【问题标题】:Node and Express simple POST - 400 Bad RequestNode 和 Express 简单的 POST - 400 错误请求
【发布时间】:2022-02-28 03:25:09
【问题描述】:

我肯定在做一些愚蠢的事情,因为这应该是世界上最简单的事情。

我要做的只是在 Express 路由中执行 POST。

我的 app.js:

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var index = require('./routes/index');

var app = express();

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', index);

app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

app.use(function(err, req, res, next) {
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

我的 index.js 路由:

var express = require('express');
var router = express.Router();

router.get('/', function(req, res, next) {
    res.render('index', {title: 'Express'});
});

router.post("/test", function(req, res) {
    console.log("Hello...anyone!?");
    res.end();
});

module.exports = router;

GET 工作正常。我可以直接在浏览器中拉出 http://localhost:3000。

当我对 http:/localhost:3000/test 发起 POST 时,它会导致 400 Bad Gateway。

【问题讨论】:

  • 你试过把post放在get上面吗?
  • @VsevolodGoloviznin 是的......结果相同。
  • @TsarBomba 您能否分享一下您是如何触发 POST 请求的?
  • @NehalJWani 我同时使用 Postman 和 Fiddler,并针对 http://localhost:3000/test 执行 POST
  • 奇怪。你的代码为我运行没有任何问题。

标签: javascript node.js express


【解决方案1】:

最后,这与 Node 或发布的代码无关。我重新启动了我的电脑,问题就消失了。我找不到任何可以解释的东西。

【讨论】:

  • 为什么投反对票?我澄清了我的问题是什么,我最初发布时完全不知道。这很好地可以合法地帮助某人。跛脚。
  • 讨厌的人会讨厌。继续努力,不要让他们让你失望。
【解决方案2】:

如果有人觉得这很有帮助,我遇到了同样的问题,而罪魁祸首竟然是缺少标题。我知道我需要 "Content-Type": "application/json" 标头,我已经有了它,但我不知道我缺少另外两个标头。

我的解决方案还在 Postman 中添加 "Content-Length""Host" 标头。

我看到其他一些人质疑是否需要 "Content-Length" 标头,但在我的情况下,至少需要三个 "Content-Type""Content-Length""Host",否则它总是会失败。

【讨论】:

    猜你喜欢
    • 2019-07-23
    • 2020-05-09
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    相关资源
    最近更新 更多