如何从 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 访问它时我遇到了同样的错误,但与邮递员一起工作得很好, 这段代码工作正常,你做了这段代码中的所有事情,但仍然