Warning
This document is for an old release 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)