Implementación de CORS en aplicaciones Django con Python

Implementación de CORS en aplicaciones Django con Python

CORS, o Cross-Origin Resource Sharing, es una especificación del W3C que permite que los recursos de un dominio accedan a recursos de otro dominio. Esto es útil para aplicaciones web que necesitan interactuar con otros servicios, como API REST.

En Django, la implementación de CORS es relativamente sencilla. En este tutorial, veremos cómo implementar CORS en una aplicación Django con Python.

Requisitos

Para seguir este tutorial, necesitarás lo siguiente:

  • Un entorno de desarrollo Python
  • Django instalado
  • Una aplicación Django básica

Pasos

  1. Instala el paquete django-cors-headers.
pip install django-cors-headers
  1. Agrega corsheaders a la lista de aplicaciones instaladas en settings.py.
Python
INSTALLED_APPS = [
    ...
    'corsheaders',
]
  1. Agrega corsheaders.middleware.CorsMiddleware a la lista de middleware en settings.py.
Python
MIDDLEWARE = [
    ...
    'corsheaders.middleware.CorsMiddleware',
    ...
]
  1. Configura las opciones de CORS en settings.py.
Python
CORS_ORIGIN_ALLOW_ALL = True

Esto permitirá que cualquier dominio acceda a los recursos de tu aplicación. Si deseas restringir el acceso a ciertos dominios, puedes usar la opción CORS_ALLOWED_ORIGINS para especificar una lista de dominios permitidos.

  1. Prueba tu aplicación.

Ahora, deberías poder realizar peticiones CORS desde otros dominios a tu aplicación Django.

Ejemplo

Supongamos que tenemos una aplicación Django con una API REST que expone un recurso /users. Para probar CORS, podemos crear un cliente en otro dominio y realizar una petición GET al recurso /users.

JavaScript
// Cliente en otro dominio

const axios = require('axios');

const url = 'https://example.com/users';

axios.get(url).then((response) => {
  console.log(response);
});

Si CORS está configurado correctamente, la petición debería completarse con éxito y el cliente recibirá una respuesta JSON con una lista de usuarios.

Opciones avanzadas

Además de las opciones básicas que vimos anteriormente, django-cors-headers también ofrece una serie de opciones avanzadas para controlar el comportamiento de CORS. Por ejemplo, puedes usar las opciones CORS_ALLOW_METHODS y CORS_ALLOW_HEADERS para especificar los métodos y encabezados permitidos en las peticiones CORS.

Para obtener más información sobre las opciones avanzadas de CORS, consulta la documentación de django-cors-headers.

Conclusión

La implementación de CORS en aplicaciones Django con Python es relativamente sencilla. Con los pasos que vimos en este tutorial, podrás permitir que tus aplicaciones interactúen con recursos de otros dominios.