I wrote back-end code with HTTP module and test with jquery on HTML simply to check user's register and login, when i submit user info i always received error2 even when i submit the correct user info, i checked the syntax and couldn't found similar question on internet, if you will pardon me(i'm new to this world),thank you for help.
this is my back-end code:
const http = require('http')
const url = require('url')
const querystring = require('querystring')
const fs = require('fs')
// url.parse('/aaa/bbb?a=12&b=5')
// querystring.parse('a=12&b=5')
let users = {}
let server = http.createServer((req, res) => {
let {
pathname,
// user,pass
query
} = url.parse(req.url, true)
console.log(pathname,query)
let str = ''
req.on('data', chunk => {
str += chunk
})
req.on('end', () => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-headers", "*");
let post = querystring.parse(str)
// console.log(pathname,query,post)
let {user,pass} = query
switch (pathname) {
case '/reg':
if (!user) {
res.write("{'err': 1,'msg': 'username is required'}")
} else if (!pass) {
res.write("{'err': 1,'msg': 'password is required'}")
} else if (!/^w{8,32}$/.test(user)) {
res.write("{'err': 1,'msg': 'not valid username'}")
} else if (/^['|"]$/.test(pass)) {
res.write("{'err': 1,'msg': 'not valid password'}")
} else if (users[user]) {
res.write("{'err': 1,'msg': 'username exists'}")
} else {
users[user] = pass
res.write("{'err': 0,'msg': 'register success'}")
}
res.end()
break
case '/login':
if (!user) {
res.write("{'err': 1,'msg': 'username is required'}")
} else if (!pass) {
res.write("{'err': 1,'msg': 'password is required'}")
} else if (!/^w{8,32}$/.test(user)) {
res.write("{'err': 1,'msg': 'not valid username'}")
} else if (/^['|"]4/.test(pass)) {
res.write("{'err': 1,'msg': 'not valid password'}")
} else if (!users[user]) {
res.write("{'err': 1,'msg': 'user not exist'}")
} else if (users[user]!=pass) {
res.write("{'err': 1,'msg': 'username or password not incorrect'}")
} else {
res.write("{'err': 0,'msg': 'login success'}")
}
res.end()
break
default:
fs.readFile(`${pathname}`, (err, data) => {
if (err) {
res.writeHeader(404)
res.write('not found')
} else {
res.write(data)
}
res.end()
})
}
})
})
server.listen(8080, () => {
console.log("8080 monitoring")
})
and this is front-end code:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index2</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.9.1/jquery.js"></script>
<script type='text/javascript'>
$(function () {
$('#btn1').click(function () {
$.ajax({
url:'http://127.0.0.1:8080/reg',
data:{user:$('#user').val(),pass:$('#pass').val()},
dataType: 'json',
success(data){
if(data.err){
alert('error 1',data.msg)
}else{
alert('success')
}
},error(){
alert('error 2')
}
})
})
$('#btn2').click(function () {
$.ajax({
url:'http://127.0.0.1:8080/login',
data:{user:$('#user').val(),pass:$('#pass').val()},
dataType: 'json',
success(data){
if(data.err){
alert('error 1',data.msg)
}else{
alert('success')
}
},error(){
alert('error 2')
}
})
})
})
</script>
</head>
<body>
username: <input type="text" id="user" value="enter your username"><br><br>
password: <input type="password" id="pass" value="enter your password"><br><br>
<input type="button" value="Submit" id="btn1">
<input type="button" value="login" id="btn2">
</body>
</html>
enter image description here
question from:
https://stackoverflow.com/questions/65859570/backend-and-frontend-of-http-module