У меня есть скрипт Python, который может войти в Odoo, используя вызовы RPC для URL-адреса jsonrpc. Скрипты работают, если я запускаю их на сервере 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:
Функция объявлена как способная обрабатывать запрос типа «json», но вызывается с запросом типа «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.