nginx 没有将 mime 类型 'json' 传递给 url 'jsonrpc' 处的 Odoo RPC 调用

nginx is not passing mime type 'json' to Odoo RPC call at url 'jsonrpc'

我有一个 Python 脚本可以使用对 jsonrpc url 的 RPC 调用登录 Odoo。如果我在 Odoo 服务器上 运行 脚本并将其直接指向 Odoo,则脚本有效。

login_parms = {
"id": conversation_id,
"jsonrpc": "2.0",
"method": "call",
"params": {
    "args": [database, username, password],
    "method": "login", "service": "common"}}


response = requests.get(
    url,
    json=login_parms,
    headers={'Content-Type': 'application/json', }) 

但是,当我尝试远程 运行 脚本时,我收到 400:

Function declared as capable of handling request of type 'json' but called with a request of type 'http'

我正在使用 nginx 作为代理,我最好的猜测是它没有正确发送 'json' 作为 mime 类型。我尝试将以下位置块添加到我的服务器块:

location /jsonrpc {
    proxy_pass http://127.0.0.1:8069/jsonrpc;
    proxy_redirect off;
    proxy_set_header HOST $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    client_max_body_size 300M;
    default_type application/json;
}

但是我收到了同样的 400 错误。

我正在将我的 RPC 调用发送到 http,它正在重定向到 https。重定向没有传递 json mime 类型。当我开始将我的 RPC 调用直接发送到 https 时,Odoo 收到 json 并按预期响应。

作为记录,这里是位置块代码:

    location /jsonrpc {
    proxy_pass http://127.0.0.1:8069;
    proxy_redirect off;
    proxy_set_header HOST $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Content-Type application/json;
    client_max_body_size 300M;
}