node.js - Nodejs api 不接受 POST 方法,错误 405
问题描述
我已经搜索了现有的问题,但没有一个对我有用。
我有简单的 nodejs 方法,在我的本地主机上它们工作正常,但是当我将它们托管在服务器(nginx)上时,我的 post 方法给出了 405 错误(不允许),即使我已经允许 CORS 这是我的服务器文件
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', (request, 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);
});
如果您不知道, usingprocess.env.PORT || 3000
将使用process.env.PORT
已设置的值。如果它是虚假的,那么3000
将被使用。
查看条目NGINX
以确定反向代理如何nginx.conf
将server
流量发送到后端应用程序。
推荐阅读
- r - 使用分配/创建具有值的新对象(dplyr)
- git - 如何将键盘快捷键绑定到“源代码管理 > 重命名...”操作?
- wpf - WPF 无法在嵌套的自定义控件中捕获鼠标事件
- java - 评论要求 reader.markSupported() 返回 true beanio
- laravel - 如何解决 Laravel sslcommerze 集成错误?
- regex - 用于 IP 和可选 CIDR 的 Linux Grep 或 Sed 正则表达式
- laravel - 如何在迁移中更改字段类型?
- mysql - 将 SELECT 语句 MySQL 转换为函数 PL/SQL
- javascript - 如何将子组件嵌套到父组件中并导出它们?
- java - 如何修复:DecimalFormat No Class Found 错误 // 已解决