Servidor: NodeJS (Express, Passport y MongoStore para middleware) Cliente: VueJS y Vue Router
Antecedentes He notado que cada vez que cambia la ubicación del hash con Vue Router, envía una solicitud GET al servidor en la ruta raíz. Por ejemplo, navegar desde /app#/route1 a /app#/route2 (usando router.go() o <router-link> ) enviará una solicitud GET a /app .
En la lógica de enrutamiento de mi servidor, la ruta de la aplicación se autentica mediante Express/Passport/MongoStore para garantizar que el usuario haya iniciado sesión. Si carga o actualiza una página completa, la respuesta redirigirá al usuario a la pantalla de inicio de sesión si no está autenticado, pero cuando Vue Router envía la solicitud, la autenticación no tiene ningún efecto, ni res.render o res.redirect . (Por lo tanto, si el cliente cierra la sesión en una segunda pestaña, la primera pestaña aún puede navegar por los menús de la primera pestaña, excepto que no se llenarán datos en las páginas, ya que las solicitudes de datos de AJAX y SocketIO se autenticarán por separado).
La diferencia clave, por supuesto, entre un Vue Router GET y un GET de página completa es que "text/html" no se mostrará en los encabezados de solicitud de aceptación, entre otras cosas. Por el momento, el servidor responde con Res.render para todas las solicitudes GET, pero para las navegaciones de Vue Router esto es redundante. Además de esto, el servidor también realiza algunas actualizaciones en MongoDb para configurar algunos entornos para la aplicación, pero esto no es necesario cada vez que el usuario navega por las páginas solo del lado del cliente, solo es necesario en la carga de la página.
Aunque podría modificar alguna lógica del lado del servidor para omitir algunos pasos cuando text/html no está incluido en req.headers.accept , el middleware aún realiza una autenticación innecesaria cada vez que el usuario navega y no puedo ver un beneficio de seguridad inmediato al hacerlo.
Pregunta ¿Es posible configurar Vue Router para que no envíe solicitudes cada vez que cambia la ubicación del hash?