#node.js #reactjs #express #cors
Вопрос:
Чтобы описать мою проблему: есть страница реакции, на которой пользователь заполняет электронную почту и отправляет ее в экспресс — службу с помощью Axios.post-эта часть работает. Но затем я хочу, чтобы пользователь был перенаправлен на страницу регистрации (/регистрация) после неправильного входа в систему. Я использовал res.перенаправление(«http://localhost:3000/registration»), но он снова и снова выдает одну и ту же ошибку.
Ошибка
Ответ на предполетный запрос не проходит проверку контроля доступа: заголовок ‘Access-Control-Allow-Origin’ имеет значение ‘http://localhost:3000″ это не равно поставляемому источнику.
user.js файл
//Authenticate user
router.post("/auth", async (req, res) => {
const pass = req.body.pass
const email = req.body.email
//Same as SELECT command
await User.findOne({
where: {
email: email
}
}).then(function (user) {
if(!user) {
res.redirect("http://localhost:3000/registration")
} else {
bcrypt.compare(pass, user.pass, function (err, result) {
if (result == true) {
console.log("Logged in")
res.send({
token: "123123"
})
} else {
res.redirect('/')
}
})
}
})
})
index.js файл
const express = require('express')
const cors = require('cors')
const app = express()
const db = require('./models/index')
app.use(express.urlencoded({extended: true}))
app.use(express.json())
app.use(cors())
db.sequelize.sync({ force: true }).then(() => {
console.log("Drop and re-sync db.");
});
app.get("/", (req, res) => {
//res.json({message: "WELCOME"})
res.redirect("http://localhost:3000/")
})
require("./routes/user")(app)
require("./routes/category")(app)
require("./routes/product")(app)
app.listen(3001, () => {
console.log("running on port 3001")
})
Ответ №1:
При сбое входа перенаправление с использованием this.props.history.push('/registration')
компонента на основе классов в React.
Изменить: Если вы используете компонент на основе функций, то
import { useHistory } from "react-router-dom";
let history = useHistory();
перенаправление с помощью history.push('/registration')
Комментарии:
1. Проблема в том, что я использую компонент на основе функций для страницы входа в систему, потому что я работаю с useState.
Ответ №2:
Нашел его!
window.location.replace("some location")
или
window.location = "some location"