我有odoo 8控制器,它返回某些只有日志用户才能访问的数据。网站位于不同的服务器上,然后是odoo本身。如何从我的页面请求身份验证(正如在不同服务器上提到的那样)?
附注:在我的开发环境中,这一切都是因为im从localhost/index.html调用到localhost/getData (通过对localhost的反向代理:8069/getData用于cors)。但是当我把它放到真正的服务器上时,它会以缺少的会话错误进行响应。
谢谢
发布于 2016-10-10 03:52:09
您需要从远程服务器进行身份验证并获得一个session_id。一旦您有了它,就把它作为cookie传递给后续的请求。
import requests
from requests import Request,Session
import json
b_url = "http://yourodooserver.com"
# or "http://201.100.100.12:8069" (or whatever the ip is)
url = "{}/web/session/authenticate".format(b_url)
db = "<YOURDBNAME>"
user = "<YOURUSERNAME>"
passwd = "<YOURPASSWORD>"
s = Session()
data = {
'jsonrpc':'2.0',
'params': {
'context': {},
'db': db,
'login': user,
'password': passwd,
},
}
headers = {
'Content-type': 'application/json'
}
req = Request('POST',url,data=json.dumps(data),headers=headers)
prepped = req.prepare()
resp = s.send(prepped)
session_id = json.loads(resp.text)['result']['session_id']
# NOW MAKE REQUESTS AND PASS YOUR SESSION ID
res = requests.get(b_url + "/your/controller/path",cookies={'session_id':str(session_id)})
print(res.text)
https://stackoverflow.com/questions/39947501
复制相似问题