Tengo un servidor express.js realmente simple,
app.get("/:var", (req, res) => { console.log(req.params.var); res.redirect(301, "/"); });Ahora en mi navegador, si voy a las siguientes URL una tras otra
localhost:127/abc localhost:127/abc localhost:127/xyz localhost:127/abc localhost:127/xyz localhost:127/xyz localhost:127/abcObtengo el siguiente resultado en la terminal de mi servidor
abc xyz Por alguna razón, si res.redirect(301, "/") , todo funciona como se esperaba y obtengo el siguiente resultado
abc abc xyz abc xyz xyz abcIncluso si reinicio el servidor, no puedo usar un valor que había usado antes del reinicio. Solo si elimino el caché de mi navegador, puedo usar ese valor nuevamente solo una vez.
¿Alguien puede explicar lo que está pasando? Necesito mantener la redirección y también procesar los datos de la URL antes de redirigir y, con suerte, no hacer que el cliente borre la caché de su navegador cada vez que quiera usar el sitio.
Aquí decía: A 301 response is cacheable by default; ie, unless otherwise indicated by the method definition or explicit cache controls - referencia: https://httpwg.org/specs/rfc7231.html#status.301
Entonces, su comportamiento de visualización es correcto, debe borrar el caché en los navegadores para ver la nueva respuesta.
La declaración anterior también sugiere la solución, puede configurar el encabezado de caché para indicar a los navegadores que no almacenen en caché la respuesta. Algo como:
res.set("cache-control","no-store")