我使用带有自定义模块的Odoo 10,并创建了这个简单的控制器。当我从浏览器访问http://127.0.0.1:8069/cmodule/cmodule
时,它工作正常。它显示返回字符串。
我同时尝试了GET和POST,但是得到了相同的错误结果。关于CORS政策阻止请求的信息。我的Google力量尚未真正找到解决方法或任何替代方法。
但是,当我尝试通过其他用PHP / javascript编写的东西通过AJAX请求时。我在javascript上收到此错误:
从源“ http://127.0.0.1:8069/cmodule/cmodule/”对“ http://127.0.0.1”处的XMLHttpRequest的访问已被CORS策略阻止:在所请求的资源上不存在“ Access-Control-Allow-Origin”标头。
以及来自odoo的错误:
2020-04-30 08:18:13,401 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访问它时,我遇到了相同的错误,但与邮递员合作得很好
这段代码很好用,您在这段代码中做了所有事情,但仍然