summaryrefslogtreecommitdiff
path: root/odoo/http.py
diff options
context:
space:
mode:
authorMartin Geubelle <mge@odoo.com>2019-01-15 09:09:02 +0000
committerMartin Geubelle <mge@odoo.com>2019-02-13 09:38:30 +0000
commit06de5640744a4bb5eadd6cf18b7c83e47ced285d (patch)
treed9182b93355287f09216b62a513d715852568ff2 /odoo/http.py
parent016f9612ba4688fb940910c74f13f9cbd5b115e0 (diff)
[REF] web, *: remove JSONP support
JSONP can be entirely replaced by the CORS mechanism, which is simpler. We support CORS in our routes since 8.0 (odoo/odoo@9cce88a), so it's about time to get rid of JSONP.
Diffstat (limited to 'odoo/http.py')
-rw-r--r--odoo/http.py40
1 files changed, 4 insertions, 36 deletions
diff --git a/odoo/http.py b/odoo/http.py
index 15534b41bc8..886fecc48ba 100644
--- a/odoo/http.py
+++ b/odoo/http.py
@@ -579,34 +579,14 @@ class JsonRequest(WebRequest):
def __init__(self, *args):
super(JsonRequest, self).__init__(*args)
- self.jsonp_handler = None
self.params = {}
args = self.httprequest.args
- jsonp = args.get('jsonp')
- self.jsonp = jsonp
request = None
request_id = args.get('id')
- if jsonp and self.httprequest.method == 'POST':
- # jsonp 2 steps step1 POST: save call
- def handler():
- self.session['jsonp_request_%s' % (request_id,)] = self.httprequest.form['r']
- self.session.modified = True
- headers=[('Content-Type', 'text/plain; charset=utf-8')]
- r = werkzeug.wrappers.Response(request_id, headers=headers)
- return r
- self.jsonp_handler = handler
- return
- elif jsonp and args.get('r'):
- # jsonp method GET
- request = args.get('r')
- elif jsonp and request_id:
- # jsonp 2 steps step2 GET: run and return result
- request = self.session.pop('jsonp_request_%s' % (request_id,), '{}')
- else:
- # regular jsonrpc2
- request = self.httprequest.get_data().decode(self.httprequest.charset)
+ # regular jsonrpc2
+ request = self.httprequest.get_data().decode(self.httprequest.charset)
# Read POST content or POST Form Data named "request"
try:
@@ -630,16 +610,8 @@ class JsonRequest(WebRequest):
if result is not None:
response['result'] = result
- if self.jsonp:
- # If we use jsonp, that's mean we are called from another host
- # Some browser (IE and Safari) do no allow third party cookies
- # We need then to manage http sessions manually.
- response['session_id'] = self.session.sid
- mime = 'application/javascript'
- body = "%s(%s);" % (self.jsonp, json.dumps(response, default=date_utils.json_default))
- else:
- mime = 'application/json'
- body = json.dumps(response, default=date_utils.json_default)
+ mime = 'application/json'
+ body = json.dumps(response, default=date_utils.json_default)
return Response(
body, status=error and error.pop('http_status', 200) or 200,
@@ -674,8 +646,6 @@ class JsonRequest(WebRequest):
return self._json_response(error=error)
def dispatch(self):
- if self.jsonp_handler:
- return self.jsonp_handler()
try:
rpc_request_flag = rpc_request.isEnabledFor(logging.DEBUG)
rpc_response_flag = rpc_response.isEnabledFor(logging.DEBUG)
@@ -1388,8 +1358,6 @@ class Root(object):
def get_request(self, httprequest):
# deduce type of request
- if httprequest.args.get('jsonp'):
- return JsonRequest(httprequest)
if httprequest.mimetype in ("application/json", "application/json-rpc"):
return JsonRequest(httprequest)
else: