forked from leancloud/python-sdk
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhttps_redirect_middleware.py
More file actions
30 lines (20 loc) · 891 Bytes
/
Copy pathhttps_redirect_middleware.py
File metadata and controls
30 lines (20 loc) · 891 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# coding: utf-8
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import os
from werkzeug.wrappers import Request
from werkzeug.utils import redirect
__author__ = 'asaka <lan@leancloud.rocks>'
is_prod = True if os.environ.get('LEANCLOUD_APP_ENV') == 'production' else False
class HttpsRedirectMiddleware(object):
def __init__(self, wsgi_app):
self.origin_app = wsgi_app
def __call__(self, environ, start_response):
request = Request(environ)
if is_prod and request.headers.get('X-Forwarded-Proto') != 'https':
url = 'https://{0}{1}'.format(request.host, request.path)
if request.query_string:
url += '?{0}'.format(request.query_string)
return redirect(url)(environ, start_response)
return self.origin_app(environ, start_response)