【发布时间】:2022-11-17 04:46:16
【问题描述】:
我正在尝试查看 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() 结合起来?
我试过更改通话顺序,但这不起作用。
【问题讨论】:
-
问题不在您共享的代码中。您在发送正文后在某处设置标头。这里没有发送正文的代码。
-
嗨@Evert,感谢您的快速回复!我正在通过不同的方法 (axios) 发送 POST 请求,但我必须更改响应标头(我认为?)以便我可以从 http:localhost 发送到 http:localhost。这行得通,但是当我尝试合并 express.json() 以读取 POST 请求的主体时,它就失败了。
标签: json express post cors body-parser