res.redirect ("retour") avec des paramètres
J'ai un formulaire d'inscription sur chaque page de mon site. Lors de l'inscription, une erreur peut se produire. Après la capture de l'erreur, j'ai du renvoyer l'utilisateur à la page précédente, montrant un peu de message d'erreur. Le problème est que je ne sais pas à partir de la page que l'utilisateur a effectué l'enregistrement, j'utilise donc res.redirect('back');
. Cependant, je ne peux pas rediriger l'utilisateur de retour, j'ai pour afficher le message d'erreur aussi, donc je dois passer un argument. Mais res.redirect('back', (reg_error:'username')})
ne peut pas être utilisé directement parce que res.redirect()
ne prend pas en charge les paramètres. Comment puis-je rendre la page précédente avec un certain nombre de paramètres?
- Vous devez modifier
res.redirect('back', {reg_error:'username'})
.
Vous devez vous connecter pour publier un commentaire.
À l'aide de l'en-tête referer pour trouver ce que votre page utilisateur est venu de pourrait être utile:
Vous pouvez également stocker
backURL
dans req.session, si vous en avez besoin pour conserver sur plusieurs routes. N'oubliez pas de tester l'existence de cette variable, quelque chose comme:res.redirect(req.session.backURL || '/')
edit: Depuis ma réponse a été l'obtention de certains upvotes j'ai tapé ma manière de faire. Il a un peu de temps de sorte que vous pouvez les voir sur https://gist.github.com/therealplato/7997908 .
La différence la plus importante est l'utilisation explicite 'rebond' de paramètre dans la chaîne de requête qui remplace le Referer url.
Referer
- tête si l'utilisateur configure pas à, et de nombreux utilisateurs, en fait, configurer il y a des navigateurs de ne pas (depuis l'en-tête peut être envoyé inter-domaine et peuvent donc être utilisés à des fins que l'utilisateur pourrait ne pas approuver).Une manière très facile de mise en œuvre de ce est d'utiliser connectez-flash, un middleware pour l'express, qui tire parti de la session middleware construit en express pour pass 'flash' messages à la prochaine demande.
Cela signifie que vous n'avez pas besoin d'ajouter des champs pour suivre les url ou les messages de la forme ou de la route des motifs pour vos points de vue.
Il fournit une version simple de la même fonction dans Ruby on Rails.
(bien sûr, vous devez être à l'aide de la Cadre Express pour cette utilisation, mais je recommande fortement aussi!)
Branchez-le comme ceci:
Et ensuite l'utiliser comme ceci:
Si vous utilisez les sessions, vous pouvez simplement ajouter que
reg_error
objet de lareq.session
objet avant votre redirection. Puis il sera disponible sur lereq.session
objet lorsque vous êtes en train de charger la page précédente.Vous pourriez tout simplement rediriger comme
res.redirect('..?error=1')
la
?
balise indique au navigateur qu'il s'agit d'un ensemble de paramètres optionnels et les..
est juste un nom de chemin relatif de rappel (comme appelercd ..
sur la borne pour remonter d'un répertoire)et votre navigateur directement à la page appropriée avec cette balise à la fin:
http://.....?error=1
alors vous pouvez simplement tirer de l'erreur sur la page en faisant un:
vous pouvez coder en dur dans plusieurs différentes valeurs de l'erreur et de l'avoir à réagir de façon appropriée en fonction de ce que l'erreur s'est produite
Notez que cela rend votre page web sensible à la manipulation puisque les utilisateurs peuvent taper dans leurs propres paramètres et d'obtenir votre page pour y répondre, donc assurez-vous que l'action que vous prenez n'est pas quelque chose que vous ne voulez pas les gens qui abusent.
(Doit être fine pour une simple erreur d'affichage)
Vous devez ajouter un paramètre de page pour le formulaire.
Ensuite, vous pouvez le lire sur le serveur et de les utiliser pour la redirection.