Javascript 如何从AJAX向Odoo 10自定义模块控制器发送/获取请求?(由CORS策略阻止)
我正在使用带有自定义模块的ODOO10,我创建了这个简单的控制器。当我访问Javascript 如何从AJAX向Odoo 10自定义模块控制器发送/获取请求?(由CORS策略阻止),javascript,python,ajax,cors,odoo-10,Javascript,Python,Ajax,Cors,Odoo 10,我正在使用带有自定义模块的ODOO10,我创建了这个简单的控制器。当我访问http://127.0.0.1:8069/cmodule/cmodule从浏览器中选择。它显示返回字符串 我尝试了GET和POST,但得到了相同的错误结果。关于CORS策略阻止请求之类的东西。我的谷歌能力还没有真正找到解决这个问题的方法或任何替代方案 但是,当我试图通过AJAX从用PHP/javascript编写的其他东西中请求时。我在javascript上遇到以下错误: CORS策略已阻止从源“”访问“”处的XMLHt
http://127.0.0.1:8069/cmodule/cmodule
从浏览器中选择。它显示返回字符串
我尝试了GET和POST,但得到了相同的错误结果。关于CORS策略阻止请求之类的东西。我的谷歌能力还没有真正找到解决这个问题的方法或任何替代方案
但是,当我试图通过AJAX从用PHP/javascript编写的其他东西中请求时。我在javascript上遇到以下错误:
CORS策略已阻止从源“”访问“”处的XMLHttpRequest:请求的资源上不存在“访问控制允许源”标头
这是来自odoo的错误:
2020-04-30 08:18:13401 23156信息?werkzeug:127.0.0.1---[30/Apr/2020 08:18:13]“GET/cmodule/cmodule/HTTP/1.1”404-
以下是来自我的Odoo-10自定义模块控制器的简单代码:
# -*- coding: utf-8 -*-
from odoo import http
class Cmodule(http.Controller):
@http.route('/cmodule/cmodule/', auth='public', cors='*')
# I also tried here auth='none' and method='POST' and method='GET'
def index(self, **kw):
datas = http.request.env['product.product'].sudo().search(
[('product_group', '=', 'assort')], limit=50)
dstr = ','.join(datas )
# {'ret_val': dstr }
# I return {'ret_val': dstr } when doing POST request from AJAX.
return dstr
下面是我的AJAX请求中的代码:
$.ajax({
type: "GET",
// type: "POST",
url: "http://127.0.0.1:8069/cmodule/cmodule/",
// data: { data: 'HELLO' },
success: function(response){
console.log(response);
}
});
当您尝试不同的事情时,请尝试简单的身份验证
import odoo.addons.web.controllers.main as main
class Home(main.Home):
@http.route('/web/session/authenticate', type='json', auth="none" ,cors='*')
def authenticate(self, db, login, password, base_location=None):
request.session.authenticate(db, login, password)
return request.env['ir.http'].session_info()
我在从IOS访问它时也遇到了同样的错误,但这次与postman的合作很好,
这段代码工作得很好,你在这段代码中做了每一件事,但仍然哦,哇,它工作得很好,结果我只需要将请求与数据库相关联,所以我只添加了request.session.authenticate('db_name','','',''),请求sudo处理了其余的。。。非常感谢您(幸运的是,我帮了您:)