Habilitar CORS en nginx
Debido a que el protocolo HTTP está en desuso y algunas empresas como Google califican negativo las páginas sin HTTPS es deber de los desarrolladores actualizar las aplicaciones con un nivel de seguridad decente o alternativas para conectar aplicaciones que por su naturaleza no cuentan con ese protocolo; aunque muchos comentaran que no es buena práctica en algunos casos es necesario conectarse con aplicaciones que no utilizan dicho protocolo, para ello tenemos CORS.
Esta tecnología nos permite "controlar" los recursos cruzados. En nuestro caso tuvimos la necesidad de interconectar una APP móvil fabricada por nosotros en Ionic 5 y hacerla convivir con un Odoo 14 EE. Con la versión de ambas en producción, es difícil encontrar versiones de librerías (Usamos JSONRPC con Angular 12) que nos eviten tareas maratónicas para hacerlas funcionar 'transparentemente' sin modificar decenas de líneas de código y así evitar 'romper' las aplicaciones, afortunadamente encontramos en la red la solución para hacerlo desde nuestro proxy inverso (NGINX) el bloque de configuración para esto se muestra a continuación:
server {
server_name 127.0.0.1:8069;
location / {
proxy_pass http://127.0.0.1:8069/;
proxy_redirect off;
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
if ($request_method = 'POST') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
}
if ($request_method = 'GET') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
}
}
}
¡Advertencia! Utilice está técnica bajo su responsabilidad, algunos parámetros publicados pueden afectar el nivel de seguridad de sus aplicaciones.
Fuente: Codize
Últimas publicaciones
[REFLEXIÓN] ¿Un Partner de Odoo encarece el proyecto? Lo que escuchamos y lo que sabemos.
[CASO DE ÉXITO] De procesos manuales a una operación fluida con Protocolo SINLI, Órdenes de Pago y Envíos SII en Odoo On-Premise sobre AWS
[CASO DE ÉXITO] Implementación ERP en Industria metalúrgica con Odoo versión 19 Enterprise
Guía rápida para configurar Facturación CFDI en Odoo v19 Enterprise
¡Menos Pitch, más Acción! Recorrido por el flujo comercial en una implementación Odoo 19
Dos formas de invertir en Odoo 19: Tú eliges dónde queda el riesgo
🚀 QUADIT: Transformando negocios con honestidad y soluciones Inteligentes 💼
¿La Exclusividad y Confidencialidad son lo mismo?, Punto de vista desde proyectos de software de código abierto