将 Ionic 与 ERP odoo 连接起来

Posted

技术标签:

【中文标题】将 Ionic 与 ERP odoo 连接起来【英文标题】:Connect Ionic with ERP odoo 【发布时间】:2018-09-10 15:47:52 【问题描述】:

我正在使用 Ionic 3 应用程序。我的应用程序的后端是Odoo v11。 当使用angular4-odoo-jsonrpc 将我的移动应用程序与Odoo v11 连接时,我必须面对以下错误。

无法加载http://127.0.0.1:8069/web/session/authenticate:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'http://localhost:8100' 因此不允许访问。

这是我的代码:

import  OdooJsOnProvider  from '../../providers/odoo-js-on/odoo-js-on';
import  Component  from '@angular/core';
import  AlertController, IonicPage, Loading, LoadingController, NavController, NavParams  from 'ionic-angular';
import  UtilsProvider  from "../../providers/utils/utils";
import * as Ng6OdooRPCService from 'angular6-odoo-jsonrpc';
import  OdooRPCService  from 'angular4-odoo-jsonrpc'


@Component(
  selector: 'page-home',
  templateUrl: 'home.html'
)
export class HomePage 

  constructor(
    public navCtrl: NavController,
    private odooRPC: OdooRPCService
  ) 
    this.odooRPC.init(
      odoo_server: "http://127.0.0.1:8069",
      http_auth: "admin:admin" // optional
    );
    this.odooRPC.login('odoo', 'admin', 'admin').then(res => 
      console.log('login success');
    ).catch(err => 
      console.log('login failed', err);
    )
  

【问题讨论】:

【参考方案1】:

两种方法。

通过在后端管理 CORS 来允许您的 localhost 和端口 (8100) 访问

设置代理https://github.com/angular/angular-cli/blob/master/docs/documentation/stories/proxy.md

【讨论】:

我如何通过在后端管理 CORS 来允许我的本地主机和端口 (8100) 访问【参考方案2】:

您必须从后端管理CORS。 阅读更多关于CORShere的信息。

如果您想测试您的移动应用程序,请避免使用 CORS 将此 Extension 添加到 Google Chrome。但是这种类型的扩展只用于测试。

【讨论】:

我使用这个命令 google-chrome --disable-web-security 从浏览器停止 CORS 但仍然是同样的错误【参考方案3】:

在您的后端允许这样的 CORS:

@http.route('/route/<id>', type='http', cors='*', csrf=False, auth="user")
def method(self, id, **kwargs):

cors='*'

【讨论】:

以上是关于将 Ionic 与 ERP odoo 连接起来的主要内容,如果未能解决你的问题,请参考以下文章

独家功能分享:免费开源ERP Odoo 支持SQL在线的BI报表工具设置

想要实现erp与外网进行连接该怎么办?

在 Open ERP 中使用 Odoo 的库存管理

odoo:开源 ERP/CRM 入门与实践

如何使用gridFs将我的后端与我的前端与angular2和ionic2连接起来?

odoo:开源 ERP/CRM 入门与实践