Ho faticato per 2 giorni su questo, su google e stackover sono riuscito a fare tutto il possibile, ma non riesco a risolverlo.ExpressJS: res.redirect() non funziona come previsto?
Sto costruendo una semplice applicazione di nodo (+ Express + Mongoose) con una pagina di accesso che reindirizza alla pagina iniziale. Ecco il mio server di codice Caffè:
app
.get '/', (req, res) ->
console.log "Here we are : root"
res.sendfile(__dirname + '/index.html')
.get '/login', (req, res) ->
console.log "Here we are : '/login'"
res.sendfile(__dirname + '/login.html')
.post '/credentials', (req, res) ->
console.log "Here we are : '/credentials'"
# (here comes credentials validation stuff with Mongoose)
res.redirect '/'
La pagina di login fa una richiesta POST/credenziali, in cui si verifica dei dati pubblicati. Questo funziona. Riesco a vedere "Qui siamo: '/ credenziali'" nella console del nodo.
Quindi viene il problema: il res.redirect non funziona correttamente. So che non raggiunge il percorso '/', perché:
- posso vedere "Ci siamo: root" nella console Nodo
- La pagina index.html viene inviato al browser come risposta, ma non visualizzato nella finestra. Chrome inspector mostra la risposta alla richiesta POST, POSSO vedere il codice HTML inviato al browser nell'ispettore, ma l'URL rimane/login e la pagina di accesso è ancora visualizzata sullo schermo.
(Edit) Il reindirizzamento è in funzione callback Mongoose, non è sincrona (come NodeJS dovrebbero essere). Ho appena rimosso roba di convalida di Mongoose per chiarezza.
Ho provato ad aggiungere res.end()
, non funziona
ho cercato
req.method = 'get';
res.redirect('/');
e
res.writeHead(302, {location: '/'});
res.end();
Non funziona
Che cosa sto facendo di sbagliato? Come posso effettivamente lasciare la pagina '/ login', reindirizzare il browser a '/' e visualizzare il codice HTML che ha ricevuto?
Grazie mille per il vostro aiuto in anticipo :)
Stai effettivamente chiamando la pagina delle credenziali nel tuo browser o stai facendo una richiesta AJAX? – mvuajua
Hai mai capito cosa stava succedendo qui? Sto avendo lo stesso problema, convalida il reindirizzamento delle credenziali non funziona per una rotta specificata come GET, nel mio caso il profilo dell'utente. – OliverJ90
No, non l'ho mai capito. Ho finito per costruire la mia app in modo diverso, con la parte di login in un modal, invece di un'altra pagina ... Molto frustrante –