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$'
.
我在两个控制器中有相似的路由 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$'
.