Las cookies son simplemente pequeños archivos de texto que un servidor web envía al navegador del usuario. Contienen los siguientes datos.
- Par nombre-valor con datos reales.
- La fecha de caducidad en la que la cookie deja de ser válida.
- Dominio y ruta del servidor al que debe enviarse.
Enfoque: para recuperar todas las cookies almacenadas en JavaScript, podemos usar la propiedad document.cookie , pero esta propiedad devuelve una sola string en la que el par clave-valor está separado por un «;». Sería genial si pudiéramos almacenar el par clave-valor en un objeto, ya que facilitaría mucho el proceso de recuperación. JavaScript no proporciona ningún método para tal escenario. Así que solucionemos este problema.
Necesitamos crear una función que analice la string de cookies y devuelva un objeto que contenga todas las cookies. Este sería un proceso simple con los siguientes pasos.
- Obtenga cada par clave-valor individual de la string de cookies usando string.split(“;”) .
- Separe las claves de los valores en cada par usando string.split(“=”) .
- Cree un objeto con todos los pares clave-valor y devuelva el objeto.
Ejemplo: Consulte los comentarios en el siguiente código para una mejor comprensión.
Javascript
<script> function cookieParser(cookieString) { // Return an empty object if cookieString // is empty if (cookieString === "") return {}; // Get each individual key-value pairs // from the cookie string // This returns a new array let pairs = cookieString.split(";"); // Separate keys from values in each pair string // Returns a new array which looks like // [[key1,value1], [key2,value2], ...] let splittedPairs = pairs.map(cookie => cookie.split("=")); // Create an object with all key-value pairs const cookieObj = splittedPairs.reduce(function (obj, cookie) { // cookie[0] is the key of cookie // cookie[1] is the value of the cookie // decodeURIComponent() decodes the cookie // string, to handle cookies with special // characters, e.g. '$'. // string.trim() trims the blank spaces // auround the key and value. obj[decodeURIComponent(cookie[0].trim())] = decodeURIComponent(cookie[1].trim()); return obj; }, {}) return cookieObj; } let dummyCookieString = "username=John; gfg=GeeksForGeeks; foo=education"; // Pass document.cookie to retrieve actual cookies let cookieObj = cookieParser(dummyCookieString); console.log(`cookie gfg has value ${cookieObj['gfg']}.`); console.log(`cookie foo has value ${cookieObj['foo']}.`); </script>
Producción:
cookie gfg has value GeeksForGeeks. cookie foo has value education.
Publicación traducida automáticamente
Artículo escrito por pansaripulkit13 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA