Analizador de Cookies

Definición e instalación

Cookie es un módulo npm utilizado para analizar y serializar cookies para servidores HTTP. Para su instalación deberemos ejecutar el comando npm install cookie .

Uso

Si queremos utilizar este modulo en nuestro servidor, deberemos importarlo mediante el uso de var nombre_var = require('cookie');. Una vez lo tengamos importado, podremos analizar cualquier cookie mediante el uso de la función cookie.parse(str, options) cuyos atributos no son más que el string que contiene las cookies y las opciones son para personalizar el análisis. La opción usada para el método parse es la opción decode, la cual especifica una función que se utilizará para decodificar el valor de una cookie, así, debido a que una cookie tiene un tamaño límite, podemos codificar cookies antes de mandarlas y decodificarlas con esta opción. Otro método que podemos usar de este módulo es cookie.serialize(name,value,options), el cual se encarga de añadir una cookie de nombre name y valor value, siguiendo la opciones que se le hayan pasado como atributo. Las opciones para esta función son las siguientes:

  • Domain: especifica el valor de los dominios en los cuales la cookie puede actuar, está desactivado por defecto, así que la mayoría del tiempo sólo puede usarse una cookie en el dominio en el que se crea.
  • Encode: es parecido a la opción de la función parse, pero en este caso, en vez de decodificar, codifica.
  • Expires: especifica la cantidad de tiempo que la cookie será válida, por defecto, una cookie no tendrá fecha de expiración, por lo que la mayoría de clientes las eliminará al cerrar la página web o el explorador.
  • httpOnly: cambia el booleano que indica si la cookie puede ser utilizada sólo por métodos http.
  • maxAge: es parecido al expires, indicando, en segundos, el tiempo máximo que podrá vivir una cookie.
  • sameSite: especifica si una cookie sólo puede ser utilizada en una sóla página. Es un atributo que aún no se ha estandarizado así que muchos clientes seguramente lo ignoren.
  • Secure: es un flag utilizado para indicar si se quiere que una cookie sólo pueda ser utilizada en conexiones HTTPS.

Ejemplo

A continuación veremos un código de ejemplo utilizando este módulo:

var cookie = require('cookie');
var escapeHtml = require('escape-html');
var http = require('http');
var url = require('url');

function onRequest(req, res) {
  // Parse the query string 
  var query = url.parse(req.url, true, true).query;

  if (query && query.name) {
    // Set a new cookie with the name 
    res.setHeader('Set-Cookie', cookie.serialize('name', String(query.name), {
      httpOnly: true,
      maxAge: 60 * 60 * 24 * 7 // 1 week 
    }));

    // Redirect back after setting cookie 
    res.statusCode = 302;
    res.setHeader('Location', req.headers.referer || '/');
    res.end();
    return;
  }

  // Parse the cookies on the request 
  var cookies = cookie.parse(req.headers.cookie || '');

  // Get the visitor name set in the cookie 
  var name = cookies.name;

  res.setHeader('Content-Type', 'text/html; charset=UTF-8');

  if (name) {
    res.write('<p>Welcome back, <b>' + escapeHtml(name) + '</b>!</p>');
  } else {
    res.write('<p>Hello, new visitor!</p>');
  }

  res.write('<form method="GET">');
  res.write('<input placeholder="enter your name" name="name"> <input type="submit" value="Set Name">');
  res.end('</form');
}

http.createServer(onRequest).listen(3000);

results matching ""

    No results matching ""