如何解决Nodejs api 不接受 POST 方法,错误 405
我已经搜索了现有问题,但没有一个对我有用。
我有简单的 nodejs 方法,在我的本地主机上它们工作正常,但是当我将它们托管在服务器 (nginx) 上时,即使我允许 CORS,我的 post 方法也会给出 405 的错误(不允许) 这是我的服务器文件
var http = require('http');
var mongo = require('mongodb');
var cors = require('cors')
var express = require('express');
var app = express();
app.use(cors());
var DB = 'mongodb://localhost:27017/ClientApp';
app.use(express.json());
const clientRoutes = require('./client');
const authRoutes = require('./auth');
app.get('/api/status',(request,response) => {
// console.log(request.body);
response.json({ status: ' Server Running' });
});
app.use('/',clientRoutes);
app.use('/',authRoutes);
app.listen(3000,(resp) => {
console.log('server listening at port number: ',3000);
});
这是不工作的路线
app.post('/api/register',response) => {
console.log('Request body: ',request.body);
mongo.connect(DB,(error,client) => {
console.log('Connect to Database successfully');
const connectedDb = client.db('ClientApp');
data = request.body;
if (data.username) {
connectedDb.collection('Users').insertOne(data,(error) => {
if (error)
console.log('Error occured while registration')
else {
response.status(200).send({ status: 'Response Received Successfully',code: 200 })
console.log('User registered successfully!');
}
})
} else {
response.status(204).send({ status: 'Please include the user details',code: 204 })
}
})
});
解决方法
我看到您已将应用的侦听端口设置为 3000
。您需要在 nginx.conf
文件中验证流量被设置为来自反向代理的端口。根据设置的方式,可能有一个环境变量集指示应用程序应该侦听哪个端口。此变量通常称为 PORT
。
如果设置了 PORT
环境变量,您可以像这样更改代码:
app.listen(process.env.PORT || 3000,(resp) => {
console.log('server listening at port number: ',3000);
});
如果您不知道,使用 process.env.PORT || 3000
将使用值 process.env.PORT
(如果已设置)。如果它是假的,那么将使用 3000
。
对于 NGINX
,请查看 nginx.conf
条目中的 server
,以确定反向代理如何将流量发送到后端应用程序。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。