簡體   English   中英

我如何阻止 req.body 為空。 node.js 快遞

[英]how do i stop req.body from being empty. node.js express

我有一個簡單的快速應用程序,它獲取一個獲取請求,獲取看起來像這樣:

let opts = {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  mode: "no-cors",
  body: {
    "test": "test"
  }
}

fetch("http://localhost:3001/data", opts)

它在 setup() function 中。

服務器端代碼如下所示:

const express = require('express');
const app = express();
app.listen(3001, () => console.log("listening at 3001"));
app.use(express.static("public"));
app.use(express.json());

app.post("/data", (req, res) => {
  console.log("post recived");
  console.log(req.body);
});

在我的控制台中,我刷新所有內容后得到的是:

listening at 3001
post recived
{}

帖子的正文不是未定義的,而是空的,我無法弄清楚我一生的問題是什么

問題一:無cors

mode: "no-cors",是一個聲明,你不會做任何需要 CORS 許可的事情,並且任何與 CORS 相關的錯誤都應該被抑制。

需要CORS 的許可才能設置application/json內容類型 header。

所以第一項工作是刪除那條線


問題二:CORS

然后您需要更改服務器,以便它授予您發出請求的權限。

安裝cors中間件 package並按照那里的設置說明進行操作。

確保啟用對預檢請求的支持,因為設置application/json內容類型 header 需要預檢。


問題三:JSON

您聲稱您正在發送 JSON,但您正在傳遞fetch一個普通的 object。

當您這樣做時, fetch將使用內置的toString方法將其轉換為字符串。 這為您提供了"[object Object]" ,它不是 JSON 並且不包含您的數據。

您需要改為通過 JSON 。

body: JSON.stringify({
   "test": "test"
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM