gpt4 book ai didi

html - 如何修复 POST 端点问题以允许 Node.js 和 Express 在实时网站上工作(HostGator Shared)

转载 作者:行者123 更新时间:2023-11-29 15:46:16 24 4
gpt4 key购买 nike

我正在接触 Node.js,并决定使用 MySQL 作为后端创建一个用户帐户管理系统。在 LocalHost 上它工作正常。然后我尝试在我的实时网站上复制此内容。我安装了 nvm、npm、node 和所有依赖项。现在,在本地主机上我所要做的就是“node login.js”并且一切正常。在实时网站上,情况却有所不同。我似乎无法弄清楚如何让 POST 端点工作。

这个例子......

	<form action="auth" method="POST">

应该允许此 JavaScript 运行

app.post('/auth', function(request, response) {

在 HostGator 终端上,我已经安装了所有依赖项,HostGator 上也可以使用 Apache,但我没有使用它,应该吗?

  "dependencies": {
"bcrypt-nodejs": "0.0.3",
"bcryptjs": "^2.4.3",
"body-parser": "^1.19.0",
"express": "^4.16.4",
"express-session": "^1.16.1",
"express-sessions": "^1.0.6",
"mysql": "^2.17.1",
"nan": "^2.14.0"

我使用“node login.js”来启动服务器

这是我的完整代码,其中包含一些凭据 ****

HTML

	<div class="accounts-form">
<h1>Login Form</h1>
<form action="auth" method="POST">
<input type="text" name="username" placeholder="Username" required maxlength="50">
<input type="password" name="password" placeholder="Password" required maxlength="255">
<input type="submit">
<a href="/signup"><h4> Sign Up </h4></a>
</form>
</div>

JavaScript

var mysql = require('mysql');
var express = require('express');
var session = require('express-session');
var bodyParser = require('body-parser');
var path = require('path');
var bcrypt = require('bcryptjs');

const saltRounds = 14;

var connection = mysql.createConnection({
**********
});

var app = express();

app.use(session({
secret: ****************,
resave: true,
saveUninitialized: true
}));
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());

app.get('/', function(request, response) {
response.sendFile(path.join(__dirname + '/login.html'));
});

app.post('/user', function(request, response) {

var username = request.body.username;
var password = request.body.password;
var password2 = request.body.password2;
var email = request.body.email;

if (password == password2) {
if (username && password && email) {
bcrypt.hash(password, saltRounds, function(error, hash) {
var sql = "INSERT INTO accounts (username, password, email ) VALUES ( ? , ? , ?)";
connection.query(sql, [username, hash, email], function(error, results, fields) {
if (error) throw error;
console.log("1 record inserted");
response.redirect('/login');
})
});
};
} else {
console.log("Password not identical.");
};
});

app.post('/auth', function(request, response) {
var username = request.body.username;
var password = request.body.password;

if (username && password) {
connection.query('SELECT password FROM accounts WHERE username = ?', [username], function(error, hash) {
bcrypt.compare(password, hash[0].password, function(error, res) {
if (res) {
request.session.loggedin = true;
request.session.username = username;
response.redirect('/home');
} else {
response.send('Incorrect Username and/or Password!');
}
response.end();
});
});
} else {
response.send('Please enter Username and Password!');
response.end();
}
});

app.get('/signup', function(request, response) {
response.sendFile(path.join(__dirname + '/signup.html'));
});

app.get('/login', function(request, response) {
response.sendFile(path.join(__dirname + '/login.html'));
});

app.get('/home', function(request, response) {
if (request.session.loggedin) {
response.send('Welcome back, ' + request.session.username + '!');
} else {
response.send('Please login to view this page!');
}
response.end();
});

app.listen(3742);

每当我点击提交按钮时都会出现 404 错误 Error

最佳答案

<form action="/auth" method="POST">

因为你定义了而不是验证

app.post('/auth', function(request, response) {

关于html - 如何修复 POST 端点问题以允许 Node.js 和 Express 在实时网站上工作(HostGator Shared),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57011141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com