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
- Instala el paquete
django-cors-headers
.
pip install django-cors-headers
- Agrega
corsheaders
a la lista de aplicaciones instaladas ensettings.py
.
INSTALLED_APPS = [
...
'corsheaders',
]
- Agrega
corsheaders.middleware.CorsMiddleware
a la lista de middleware ensettings.py
.
MIDDLEWARE = [
...
'corsheaders.middleware.CorsMiddleware',
...
]
- Configura las opciones de CORS en
settings.py
.
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.
- 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
.
// 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.