首页 > 解决方案 > 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

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

使用邮递员时,所有人都以未定义的形式返回


我正在尝试发布到快速服务器,但是我无法让我的 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

在此处输入图像描述

标签: node.jsexpresscpanel

解决方案


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

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

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


推荐阅读