如何从 AJAX 向 Odoo 10 自定义模块控制器发出 POST/GET 请求? (被 CORS 策略阻止)
How do I do POST/GET request from AJAX to Odoo 10 custom module controller? (Blocked by CORS policy)
我将 Odoo 10 与自定义模块一起使用,并创建了这个简单的控制器。当我从浏览器访问 http://127.0.0.1:8069/cmodule/cmodule
时它工作正常。它显示 return 字符串。
我尝试了 GET 和 POST,但我得到了相同的错误结果。关于 CORS 策略阻止请求之类的东西。我的 google 权力还没有真正找到解决这个问题的任何方法或任何替代方法。
但是当我尝试通过 AJAX 从我在 PHP/javascript 中编写的其他内容请求时。我在 javascript:
上收到此错误
Access to XMLHttpRequest at 'http://127.0.0.1:8069/cmodule/cmodule/' from origin 'http://127.0.0.1' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
而这个来自 odoo 的错误:
2020-04-30 08:18:13,401 23156 INFO ? 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 访问它时我遇到了同样的错误,但与邮递员一起工作得很好,
这段代码工作正常,你做了这段代码中的所有事情,但仍然
我将 Odoo 10 与自定义模块一起使用,并创建了这个简单的控制器。当我从浏览器访问 http://127.0.0.1:8069/cmodule/cmodule
时它工作正常。它显示 return 字符串。
我尝试了 GET 和 POST,但我得到了相同的错误结果。关于 CORS 策略阻止请求之类的东西。我的 google 权力还没有真正找到解决这个问题的任何方法或任何替代方法。
但是当我尝试通过 AJAX 从我在 PHP/javascript 中编写的其他内容请求时。我在 javascript:
上收到此错误Access to XMLHttpRequest at 'http://127.0.0.1:8069/cmodule/cmodule/' from origin 'http://127.0.0.1' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
而这个来自 odoo 的错误:
2020-04-30 08:18:13,401 23156 INFO ? 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 访问它时我遇到了同样的错误,但与邮递员一起工作得很好,
这段代码工作正常,你做了这段代码中的所有事情,但仍然