Passa al contenuto
Odoo Menu
  • Accedi
  • Provalo gratis
  • App
    Finanze
    • Contabilità
    • Fatturazione
    • Note spese
    • Fogli di calcolo (BI)
    • Documenti
    • Firma
    Vendite
    • CRM
    • Vendite
    • Punto vendita Negozio
    • Punto vendita Ristorante
    • Abbonamenti
    • Noleggi
    Siti web
    • Configuratore sito web
    • E-commerce
    • Blog
    • Forum
    • Live chat
    • E-learning
    Supply chain
    • Magazzino
    • Produzione
    • PLM
    • Acquisti
    • Manutenzione
    • Qualità
    Risorse umane
    • Dipendenti
    • Assunzioni
    • Ferie
    • Valutazioni
    • Referral dipendenti
    • Parco veicoli
    Marketing
    • Social marketing
    • E-mail marketing
    • SMS marketing
    • Eventi
    • Marketing automation
    • Sondaggi
    Servizi
    • Progetti
    • Fogli ore
    • Assistenza sul campo
    • Helpdesk
    • Pianificazione
    • Appuntamenti
    Produttività
    • Comunicazioni
    • Approvazioni
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    App di terze parti Odoo Studio Piattaforma cloud Odoo
  • Settori
    Retail
    • Libreria
    • Negozio di abbigliamento
    • Negozio di arredamento
    • Alimentari
    • Ferramenta
    • Negozio di giocattoli
    Cibo e ospitalità
    • Bar e pub
    • Ristorante
    • Fast food
    • Pensione
    • Grossista di bevande
    • Hotel
    Agenzia immobiliare
    • Agenzia immobiliare
    • Studio di architettura
    • Edilizia
    • Gestione immobiliare
    • Impresa di giardinaggio
    • Associazione di proprietari immobiliari
    Consulenza
    • Società di contabilità
    • Partner Odoo
    • Agenzia di marketing
    • Studio legale
    • Selezione del personale
    • Audit e certificazione
    Produzione
    • Tessile
    • Metallo
    • Arredamenti
    • Alimentare
    • Birrificio
    • Ditta di regalistica aziendale
    Benessere e sport
    • Club sportivo
    • Negozio di ottica
    • Centro fitness
    • Centro benessere
    • Farmacia
    • Parrucchiere
    Commercio
    • Tuttofare
    • Hardware e assistenza IT
    • Ditta di installazione di pannelli solari
    • Calzolaio
    • Servizi di pulizia
    • Servizi di climatizzazione
    Altro
    • Organizzazione non profit
    • Ente per la tutela ambientale
    • Agenzia di cartellonistica pubblicitaria
    • Studio fotografico
    • Punto noleggio di biciclette
    • Rivenditore di software
    Carica tutti i settori
  • Community
    Apprendimento
    • Tutorial
    • Documentazione
    • Certificazioni 
    • Formazione
    • Blog
    • Podcast
    Potenzia la tua formazione
    • Programma educativo
    • Scale Up! Business Game
    • Visita Odoo
    Ottieni il software
    • Scarica
    • Versioni a confronto
    • Note di versione
    Collabora
    • Github
    • Forum
    • Eventi
    • Traduzioni
    • Diventa nostro partner
    • Servizi per partner
    • Registra la tua società di contabilità
    Ottieni servizi
    • Trova un partner
    • Trova un contabile
    • Incontra un esperto
    • Servizi di implementazione
    • Testimonianze dei clienti
    • Supporto
    • Aggiornamenti
    GitHub Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Richiedi una demo
  • Prezzi
  • Aiuto

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • CRM
  • e-Commerce
  • Contabilità
  • Magazzino
  • PoS
  • Progetti
  • MRP
All apps
È necessario essere registrati per interagire con la community.
Tutti gli articoli Persone Badge
Etichette (Mostra tutto)
odoo accounting v14 pos v15
Sul forum
È necessario essere registrati per interagire con la community.
Tutti gli articoli Persone Badge
Etichette (Mostra tutto)
odoo accounting v14 pos v15
Sul forum
Assistenza

Avoid CORS Error (WebApp Cordova)

Iscriviti

Ricevi una notifica quando c'è un'attività per questo post

La domanda è stata contrassegnata
webservicesaccessoriginallowCORS
7 Risposte
37210 Visualizzazioni
Avatar
Fernando La Chica Mera

Hi, I'm developing an App with Cordova with which I intend to consume services Odoo. If launched the App with an emulator of Cordova as "ripple emulate" gives me error 404. Doing a little research I see that is related to that default CORS not allowed. I have the same problem if I want to consume the webservice from a web page installed in a different domain of Odoo. I have no problems in playing with the application if I have it installed on the device but I always try to compile and install and that is time consuming.

Have you got enabled CORS in Odoo? How I can do to add the allow-access-from domain * a werkzug header? Thank you.

0
Avatar
Abbandona
Fernando La Chica Mera
Autore

No one has faced the problem of access to external web via webservice to Odoo?

Avatar
Fernando La Chica Mera
Autore Risposta migliore

I managed to consume the XML-RPC service from a Web App. I use https://github.com/timheap/jquery-xmlrpc

To make it work I had to modify the file <Odoo> /openerp/service/wsgi_server.py in the following procedures


def xmlrpc_return(start_response, service, method, params, string_faultcode=False):

"""

Helper to call a service's method with some params, using a wsgi-supplied

``start_response`` callback.

This is the place to look at to see the mapping between core exceptions

and XML-RPC fault codes.

"""

# Map OpenERP core exceptions to XML-RPC fault codes. Specific exceptions

# defined in ``openerp.exceptions`` are mapped to specific fault codes;

# all the other exceptions are mapped to the generic

# RPC_FAULT_CODE_APPLICATION_ERROR value.

# This also mimics SimpleXMLRPCDispatcher._marshaled_dispatch() for

# exception handling.

try:

result = openerp.http.dispatch_rpc(service, method, params)

response = xmlrpclib.dumps((result,), methodresponse=1, allow_none=False, encoding=None)

except Exception, e:

if string_faultcode:

response = xmlrpc_handle_exception_string(e)

else:

response = xmlrpc_handle_exception_int(e)

start_response("200 OK", [

('Content-Type','text/xml'),('Content-Length', str(len(response))),

('Access-Control-Allow-Origin','*'),

('Access-Control-Allow-Methods','POST, GET, OPTIONS'),

('Access-Control-Max-Age',1000),

('Access-Control-Allow-Headers','origin, x-csrftoken, content-type, accept'),

]

)

return [response]

def wsgi_xmlrpc(environ, start_response):

""" Two routes are available for XML-RPC

/xmlrpc/<service> route returns faultCode as strings. This is a historic

violation of the protocol kept for compatibility.

/xmlrpc/2/<service> is a new route that returns faultCode as int and is

therefore fully compliant.

"""

if environ['REQUEST_METHOD'] == "OPTIONS":

response = werkzeug.wrappers.Response('OPTIONS METHOD DETECTED')

response.headers['Access-Control-Allow-Origin'] = '*'

response.headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS'

response.headers['Access-Control-Max-Age'] = 1000

# note that '*' is not valid for Access-Control-Allow-Headers

response.headers['Access-Control-Allow-Headers'] = 'origin, x-csrftoken, content-type, accept'

return response(environ, start_response)

if environ['REQUEST_METHOD'] == 'POST' and environ['PATH_INFO'].startswith('/xmlrpc/'):

length = int(environ['CONTENT_LENGTH'])

data = environ['wsgi.input'].read(length)

# Distinguish betweed the 2 faultCode modes

string_faultcode = True

if environ['PATH_INFO'].startswith('/xmlrpc/2/'):

service = environ['PATH_INFO'][len('/xmlrpc/2/'):]

string_faultcode = False

else:

service = environ['PATH_INFO'][len('/xmlrpc/'):]

params, method = xmlrpclib.loads(data)

return xmlrpc_return(start_response, service, method, params, string_faultcode)



Would you know tell me how to take these changes into an installable module? Would I have to go into the core?

1
Avatar
Abbandona
El mehdi EL OUALI

hi Fernando

I want to make ionic app to get data from odoo 12 server and i have been blocked by CORS policy, you have any solution for my issue

Fernando La Chica Mera
Autore

I'm sorry I can't help you. This solution I implemented was used in older versions of Odoo and I don't think it works in a current one. Surely someone knows what settings they should apply to not be blocked by CORS. If not, doing something similar should serve you.

Avatar
Choosak Songsawang
Risposta migliore

Hello

I researched on internet for a while, here are information and solution I would like to share:

1) I have modified "odoo\http.py" and also "odoo\service\wsgi_server.py" but had no luck.

2) I installed chrome plug-in to bypass "Cross-Origin Resource Sharing" also not working.

3) I also built ".apk" package and ran on real mobile device, also not working

Finally :)

4) I call odoo api through proxy server running nginx, no cors error anymore.

Hope this help.


0
Avatar
Abbandona
Avatar
Ravi Gadhia
Risposta migliore

Hi

To enable CORS for a particular route/endpoint you can pass cors params on a route like

@http.route('/my/route', type='json', auth='none', cors='*')  

def my_route(self):      

        ........

if you want to enable CORS for all the routes(not recommended) here are few options​

  • override werkzeug Response wrapper class ref \https://github.com/odoo/odoo/blob/12.0/odoo/http.py#L1245  

  • Nginx configuration can enable CORS

  • you can create werkzeug middleware for it

0
Avatar
Abbandona
Mohamed Mamdouh Shehata

Hello, I am building an odoo 13 app for my graduation project, can anyone help please

Avatar
Carlos
Risposta migliore

I Want to make the same in Angular 7 i need somthing to avoid cors ¿any help?

0
Avatar
Abbandona
Ti stai godendo la conversazione? Non leggere soltanto, partecipa anche tu!

Crea un account oggi per scoprire funzionalità esclusive ed entrare a far parte della nostra fantastica community!

Registrati
Post correlati Risposte Visualizzazioni Attività
(^_-)Contacto~Volaris~Directo(-_^)¿Cómo hablar directamente en Volaris?
webservices
Avatar
0
nov 25
7
How to assign a user to admin on sales, customer invoices and inventory
access
Avatar
Avatar
1
mar 25
2420
Granting Payslip Access to a Portal User: Troubleshooting Custom Group Permissions
access
Avatar
0
ago 25
2245
How to change existing access right of some model in a ir.model.access.csv? Risolto
access
Avatar
Avatar
Avatar
2
apr 23
27761
Where is my design on website of odoo stored?
webservices
Avatar
Avatar
Avatar
2
ott 21
4527
Community
  • Tutorial
  • Documentazione
  • Forum
Open source
  • Scarica
  • Github
  • Runbot
  • Traduzioni
Servizi
  • Hosting Odoo.sh
  • Supporto
  • Aggiornamenti
  • Sviluppi personalizzati
  • Formazione
  • Trova un contabile
  • Trova un partner
  • Diventa nostro partner
Chi siamo
  • La nostra azienda
  • Branding
  • Contattaci
  • Lavora con noi
  • Eventi
  • Podcast
  • Blog
  • Clienti
  • Note legali • Privacy
  • Sicurezza
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk slovenščina Español (América Latina) Español ภาษาไทย Türkçe українська Tiếng Việt

Odoo è un gestionale di applicazioni aziendali open source pensato per coprire tutte le esigenze della tua azienda: CRM, Vendite, E-commerce, Magazzino, Produzione, Fatturazione elettronica, Project Management e molto altro.

Il punto di forza di Odoo è quello di offrire un ecosistema unico di app facili da usare, intuitive e completamente integrate tra loro.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now