我在终止 SSL 的负载平衡后面有一个 Flask 应用程序。我有在使用 SSL 时“检测”并改变请求对象的代码:
@app.before_request
def before_request():
x_forwarded_proto = request.headers.get('X-Forwarded-Proto')
if x_forwarded_proto == 'https':
request.url = request.url.replace('http://', 'https://')
request.url_root = request.url_root.replace('http://', 'https://')
request.host_url = request.host_url.replace('http://', 'https://')
然后我有一个蓝图视图功能:
admin = Blueprint('admin', __name__, url_prefix='/admin')
@admin.route('/login')
def login():
print request.url
这个函数的输出是(当我去 /admin/login 时)总是 http:// 而不是 https:// (即使它应该在before_request
函数中发生了变异。
关于如何解决这个问题的任何想法?