#javascript #node.js #axios
#javascript #node.js #аксиос
Вопрос:
Я создал модуль входа в систему, используя сервер узлов (ejs engine), прослушивающий порт 3000. После успешного входа в систему с помощью этого модуля я хочу перенаправить его на другой сервер узла, прослушивающий порт 2011 (созданный с использованием jade engine). перенаправление не работает должным образом.
Работа модуля входа в систему такова, что он помещает запрос axios post с именем пользователя и паролем на живой веб-сайт и получает в ответ код успеха. Регистрация не требуется, так как аутентификация осуществляется этим живым веб-сайтом.
Оба сервера (3000 и 2011) работают нормально, но перенаправление не работает
Могу ли я перенаправить другое приложение узла (2011) на тот же сервер с доменом «localhost: 3000 / welcome»?
'use strict'
const express=require("express");
const app=express();
const path=require("path");
const port=process.env.PORT || 3000
const pubdir=path.join(__dirname,"/public");
const bodyParser = require('body-parser')
const axios=require("axios");
// const axiosCookieJarSupport = require('axios-cookiejar-support').defau<
// const tough = require('tough-cookie');
// const https = require('https');
// const Cookie=require("request-cookies").Cookie;
// const http=require("http");
// axiosCookieJarSupport(axios);
// const request= require("request");
var urlencodedParser = bodyParser.urlencoded({ extended: false })
const offlineroute=require("./router")
app.set("view engine", "ejs");
app.use(express.static(pubdir))
app.get("/",(req,res)=>{
res.render("index");
})
const url uat="It's a valid url working fine"
const url_uat_auth="Another url working fine"
app.post("/login",urlencodedParser,(req,resp)=>{
const data = {
username:req.body.user_name,
password:req.body.user_pass,
captcha:"121212",
deviceID: null,
}
const apiData={
action: "ACCESSTOKEN",
username: data.username,
password: data.password,
}
axios.post(url_uat, data)
.then((res) => {
// console.log(`Status: ${res.status}`);
console.log('Body: ', res.data);
// console.log("headers",res.headers);
if(res.data.message=='auth')
{
console.log("Successfully logged in");
// app.use("/welcome",offlineroute);
resp.redirect("localhost:2011"); //Help me here.
(async ()=>{
try {
const response = await axios.get(url_uat_auth, apiData);
console.log(response.status);
console.log(response.headers);
} catch (error) {
console.log(error.response.body);
}
})();
}
else if(res.data.message==null amp;amp; res.data.errorCode=='AUTH_9002')
{
console.log("Wrong username or password");
}
else if(res.data.message==null amp;amp; res.data.errorCode=='SWEB_9000')
{
console.log("Invalid Captcha");
}
}).catch((err) => {
console.error(err);
});
})
app.listen(port,(req,res)=>{
console.log(`Listening on Port ${port}` );
});
Комментарии:
1. Добавьте полный путь, включая протокол. соответственно.перенаправление (» localhost: 2011″ );
2. Как я могу направить другое приложение узла (в 2011 году) для запуска на том же сервере после успешного входа в систему?
Ответ №1:
Попробуйте добавить полный протокол и порт:
resp.redirect("http://localhost:2011");