快递未收到 POST 数据

Express not recieving POST data

编辑:我们现在非常确定它可能是 .htaccess 重定向了 POST 因为在 cpanel 的虚拟服务器中我们可以 POST 正确地使用 curl,这是一回事吗?这是我们的 .htaccess

RewriteBase /
RewriteRule ^index\.html$ - [L]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.starrynights.co.nz/ [R,L]

编辑:我正在使用 express 4.17.1

编辑:到目前为止,在下面的帮助下,我已经尝试过:

使用postman

时全部返回undefined

我正在尝试 POST 到一个快速服务器,但是我无法让我的 req.body.message 返回数据,它只能以未定义的形式返回。

这是部署在 cpanel 上并使用 Node.js 应用程序,

这是上面安装的代码,在使用 localhost 时它可以工作,但是部署后不能工作?

const express = require("express");
const cors = require("cors");
const router = express.Router();
const app = express();

app.use(cors());
app.use(express.json());
// app.use(express.urlencoded({ extended: true }));
app.use("/", router);

app.listen(3030, () => console.log("Server on 3030"));

router.post("/send_mail", (req, res) => {
    res.send(`the message is ${req.body.message}`);
    }
);

Post 男POST

我“按原样”尝试了您的代码,它运行良好。尝试从 windows 终端使用以下命令:

curl -i -X POST -H "Content-Type:application/json" -d "{\"message\": \"Hello World!\" }" http://localhost:3030/send_mail

所以我们设法解决了问题, 我们使用我们的 htaccess 来强制使用 https 但发布到 http 导致数据被重定向。

我们将 POST 更改为仅访问 https,它运行良好。

编辑:它又坏了,但我们发现如果使用 apache 和 cpanel 托管,它会在 POST 的末尾放置一个“/”。所以发帖的时候地址必须是https://www.example.com/send_mail/否则不会POST数据