Axios 向 ngrok 服务器发出请求 - 为什么我在 req.body 中没有收到任何数据?

问题描述 投票:0回答:1

我正在向我的服务器发出 axios post 请求。客户端在本地主机上运行。为了实现这一点,我使用了 ngrok。我通过向 axios 请求添加特定标头解决了 CORS 错误。但是,我没有在 req.body 上看到任何数据。我正在查看所有类似的帖子,只是不明白为什么我不发送任何数据。任何帮助将非常感激!!!

axios 请求:

...
const posting = async () => {
      await axios.post('http://a410-xxx-c455-d1e8-1c8a-fa19.ngrok-free.app/someRequest',
            { title: 'world' }, {
            headers: {
                "Content-type": "application/x-www-form-urlencoded"
            }}
        );
    ...
}

index.js

const app = require ('./app');
app.use(bodyParser.json());

app.js

routes(app);

routes.js

 app.use(router.post('/someRequest', (req, res, next) => {
   res.header("Access-Control-Allow-Origin", "*");
    console.log(req.body)
 }))
node.js axios localhost ngrok
1个回答
0
投票

声称要发送表单 URL 编码数据。

"Content-type": "application/x-www-form-urlencoded"

但是,您将一个对象传递给 Axios,因此它会对数据进行 JSON 编码。

 { title: 'world' }

并且您拥有的唯一的正文解析中间件仅支持 JSON 编码数据

 app.use(bodyParser.json());

您需要:

  • 主体解析器
  • 数据格式
  • 内容类型标题

全部匹配

由于您声称要发送 URL 编码数据,因此 JSON 解析器不会触发。

如果您没有覆盖它,Axios 会自动设置正确的 Content-Type 标头。

省略

headers
属性。

© www.soinside.com 2019 - 2024. All rights reserved.