Escribí un servidor Express.js simple que solo establece una cookie llamada hello-world y devuelve los encabezados de solicitud. Aquí está el código:
const app = require('express')() app.get('/', (req, res) => { res.cookie('hello-world', 'this-is-the-value-of-cookie') res.json(req.headers) }) app.listen(80, '0.0.0.0')El problema es que Google Chrome móvil no envía las cookies en la primera solicitud. Aquí hay una demostración: https://file.io/OIilmHoA2IKK
En la demostración, uso el emulador de Android Studio y el DNS comodín de nip.io. Simplemente inicio el servidor Express.js en mi máquina local y luego accedo a él a través de http://10.0.2.2.nip.io
Como puede ver en la demostración, primero abro la página y actualizo para asegurarme de que la cookie hello-world esté configurada. Luego cierro Google Chrome y lo vuelvo a abrir. Pero la primera vez que abro la página, todavía no hay una cookie hello-world .
¿Qué hice mal aquí? Quiero que se envíe la cookie hello-world incluso en la primera solicitud después de reiniciar el navegador.
No está del todo claro a partir de su fragmento de código, pero asumo que está creando una cookie de sesión en lugar de una cookie persistente. Por lo tanto, la cookie desaparece cuando cierra y vuelve a abrir el navegador.
Puede crear una cookie persistente agregando una fecha de vencimiento al valor de su cookie. Su cookie se almacenará hasta que caduque (o sea eliminada por el usuario). Ese parámetro de fecha debe formatearse como una cadena UTC. Podrías hacerlo así:
res.cookie('hello-world', 'this-is-the-value-of-cookie', { expires: new Date(2030, 0) });