diff options
| author | Martin Geubelle <mge@odoo.com> | 2019-01-15 09:09:02 +0000 |
|---|---|---|
| committer | Martin Geubelle <mge@odoo.com> | 2019-02-13 09:38:30 +0000 |
| commit | 06de5640744a4bb5eadd6cf18b7c83e47ced285d (patch) | |
| tree | d9182b93355287f09216b62a513d715852568ff2 /odoo/http.py | |
| parent | 016f9612ba4688fb940910c74f13f9cbd5b115e0 (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.py | 40 |
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: |
