node.js - Express 没有收到 POST 数据
问题描述
编辑:我们现在很确定它可能是 .htaccess 重定向 POST,因为在 cpanel 的虚拟服务器中,我们可以使用 curl 正确 POST,这是一回事吗?这是我们的 .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/$1 [R,L]
编辑:我正在使用 express 4.17.1
编辑:到目前为止,在我尝试过的以下帮助下:
- 添加bodyparser
- 使用邮递员通过 x-www-form-urlencoded 发送
- 安装 multer 并通过 form.data 发送
使用邮递员时,所有人都以未定义的形式返回
我正在尝试发布到快速服务器,但是我无法让我的 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
解决方案
所以我们设法找出了问题所在,我们使用 htaccess 来强制使用 https,但发布到 http 导致数据被重定向。
我们将 POST 更改为仅访问 https,它运行良好。
编辑:它又坏了,但我们发现如果使用 apache 和 cpanel 托管,它会在 POST 的末尾放置一个“/”。所以当发布地址必须是https://www.example.com/send_mail/否则它不会发布数据