Básicamente, son “tokens” en el requerimiento HTTP que permite identificar de alguna manera al cliente en el servidor.
Se almacenan en el cliente.
Muy usado por ser HTTP un protocolo sin estado.
Formato: nombreCookie=valor;expires=fecha;
En flask: Es un atributo del objeto request (diccionario)
from flask import request
@app.route('/')
def index():
contador = request.cookies.get('contador_visitas')
from flask import make_response
@app.route('/')
def index():
resp = make_response(render_template(...))
resp.set_cookie('contador_visitas', '0')
return resp
Las cookies se utilizan principalmente con tres propósitos:
Secure: Una cookie segura sólo se envía al servidor con una petición cifrada sobre el protocolo HTTPS. Incluso con Secure, no debería almacenarse NUNCA información sensible en la cookies.
HttpOnly: Para prevenir ataques cross-site scripting (XSS), las cookies HttpOnly son inaccesibles desde la API de Javascript Document.cookie; Solamente se envían al servidor.
SameSite: Permiten a los servidores requerir que una cookie no sea enviada con solicitudes cross-site, lo que proporciona algo de protección contra ataques cross-site request forgery (CSRF).
Es un mecanismo para conservar ciertos datos a lo largo de varios accesos.
Permite registrar un número arbitrario de variables que se conservarán en las siguientes peticiones.
Identificador: A cada visitante se le asigna un identificador único, llamado session id (identificador de sesión).
Tradicionalmente (en lenguajes como PHP) la sesión es almacenada en un archivo en el servidor, el cliente SÓLO posee el sessionID para identificarla.
Hay dos formas de propagar un identificador de sesión:
Veamos una de estas sesiones en http://localhost:5000/iniciar_sesion decodificadas con https://github.com/noraj/flask-session-cookie-manager
from flask_session import Session
# Configuración inicial de la app
app = Flask(__name__)
app.config.from_object(Config)
#Server Side session
app.config['SESSION_TYPE'] = 'filesystem'
Session(app)
from flask import Flask, render_template, request, session
from flask_session import Session
app = Flask(__name__)
app.config["SESSION_PERMANENT"] = False
app.config["SESSION_TYPE"] = "filesystem"
Session(app)
@app.route("/")
def index():
if session.get("pos_equipos") is None:
session["pos_equipos"] = { "A" : "Campeón", "B": "Sub Campeón",
"C": "Semi finalista", "D": "Semi finalista"}
return render_template ("index.html")
@app.route("/equipos")
def equipos():
return render_template("equipos.html", contenido=session["pos_equipos"])
@app.route("/agregar", methods=["POST"])
def agregar():
equipo = request.form.get("equipo")
posicion = request.form.get("posicion")
session["pos_equipos"][equipo] = posicion
return render_template("equipos.html", contenido=session["pos_equipos"])