Configuración Nginx para conectar externamente con Odoo

¿Como evitar los CORs?

Ciertamente el bloqueo de Odoo a recursos cruzados es un gran problema a la hora de generar aplicaciones. Al momento de instalar Codize en un sistema, siempre verificamos que dicho bloqueo esté permitido para la aplicaciones. Por lo tanto, no está de más mostrar un poco lo que hacemos.

Primero, nos dirigimos a /etc/nginx/sites-available y buscamos el archivo en cuestión que genera el proxy para nuestro Odoo. Si no tenemos dicho archivo o no tenemos Nginx instalado, entonces deberemos instalarlo y configurarlo como se aconseja. Dentro del archivo haremos esto:

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';
                }
        }
}

Por supuesto, poner el header Access-Control-Allow-Origin en * es bastante inseguro, y solo debería usarse en entornos de prueba o controlados. En el caso de Codize asignamos un puerto de localhost específico, pero el * puede usarse sin problema en proyectos pequeños. De esta manera, al hacer reload sobre el Nginx, tendremos nuestro servidor Odoo listo para conectarse remotamente desde fuera.

Configuración Nginx para conectar externamente con Odoo
Ignacio Buioli 20 marzo, 2021
Compartir Entrada
Suscribirse al Newsletter:
Categorías
Archivo