我如何使用express.json()和设置报头(res.setHeader)同时?



我正试图查看POST请求的正文,并设置一些标头。具体来说,我需要允许localhost ->localhost通信,这意味着添加Access-Control-Allow-Origin: *作为头。

目前为止我的代码是:

const express = require("express");
const app = express();
const port = 8080;
app.use(express.json());
app.use((req, res, next) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.header(
"Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept"
);
res.sendStatus(200);
next();
});
app.post('/', function (req, res) {
console.log(req.body.name)
res.end();
});
app.listen(port, () => console.log(`Listening on port ${port}`));

当我运行服务器时,我得到Cannot set headers after they are sent to the client

我如何结合两个app.use()s?

我试过改变电话的顺序,但那不起作用。

我在发布问题后想出了一个方法,所以我在这里分享给其他人:

const express = require("express");
const app = express();
const port = 8080;
app.use(function( req, res, next ) {
res.setHeader("Access-Control-Allow-Origin", "*");
res.header(
"Access-Control-Allow-Headers",
"Content-Type"
);
res.sendStatus(200);
let data = "";
req.on("data", function( chunk ) {
data += chunk;
console.log(data);
next();
});
});
app.listen(port, () => console.log(`Listening on port ${port}`));

最新更新