odoo自定义模块跨域ajax访问

cross-domain ajax access in custom module of odoo

我在两个控制器中有相似的路由 classes 在不同的模块中,

Route1 = ws5/mytest 在 addons/web/controllers/main->webclient class 中。只要它具有 cors='*' 意味着 cors='*' 正在做我需要的工作,它就可以很好地用于跨域。

Route2 = ws6/mytest 在我的自定义 class 中,即 custom_addons/mymodule/controllers/main->MyWebService。我无法让它用于跨域访问

两者都有 100% 相同的代码(class 名称和路由除外)如下所示,都在浏览器中工作正常,但只有一个 ws5 可用于跨域访问,我需要 ws6 一样工作

class MyWebService(http.Controller):

    @http.route('/ws6/mytest', cors='*', type='http', auth='none')
    def get_signature(self, **kw):
        response_content = "my 2 test"
        return response_content

我还应该做什么?

当我对代码进行任何更改时,它会反映在浏览器中,但对于上述路由

,从 ajax 访问还不可能

尝试将 mymodule 添加到 Odoo 的服务器范围模块。 您的服务器范围模块应类似于:

  • 对于 Odoo 版本 8、9、10:web,web_kanban,mymodule
  • 对于 Odoo 11:web,mymodule

您可以通过两种方式设置服务器范围的模块:

  • 在启动 Odoo 时通过命令行参数,例如:$ ./odoo-bin --load=web,web_kanban,mymodule(根据您的 Odoo 版本进行调整)。
  • 通过配置文件 - 添加 server_wide_modules = web,web_kanban,mymodule(根据您的 Odoo 版本进行调整)到您的 Odoo 配置文件。

这将确保在选择数据库和建立 Odoo 会话之前加载您的模块。

或者,您可以尝试将 --db-filter 设置为特定的数据库,例如。 $ ./odoo-bin --db-filter='^mydatabase$'.