Warning
This document is for an in-development version of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.
Source code for galaxy.web.framework.middleware.xforwardedhost
[docs]class XForwardedHostMiddleware:
"""
A WSGI middleware that changes the HTTP host header in the WSGI environ
based on the X-Forwarded-Host header IF found
"""
def __call__(self, environ, start_response):
x_forwarded_host = environ.get('HTTP_X_FORWARDED_HOST', None)
if x_forwarded_host:
environ['ORGINAL_HTTP_HOST'] = environ['HTTP_HOST']
environ['HTTP_HOST'] = x_forwarded_host.split(', ', 1)[0]
x_forwarded_for = environ.get('HTTP_X_FORWARDED_FOR', None)
if x_forwarded_for:
environ['ORGINAL_REMOTE_ADDR'] = environ['REMOTE_ADDR']
environ['REMOTE_ADDR'] = x_forwarded_for.split(', ', 1)[0]
x_url_scheme = environ.get('HTTP_X_URL_SCHEME', None)
if x_url_scheme:
environ['original_wsgi.url_scheme'] = environ['wsgi.url_scheme']
environ['wsgi.url_scheme'] = x_url_scheme
return self.app(environ, start_response)