'Resolves a single redirect and triggers the request again
directly on this redirect client.'

def resolve_redirect(self, response, new_location, environ, buffered=False):

    (scheme, netloc, script_root, qs, anchor) = url_parse(new_location)
    base_url = (url_unparse((scheme, netloc, '', '', '')).rstrip('/') + '/')
    cur_server_name = netloc.split(':', 1)[0].split('.')
    real_server_name = get_host(environ).rsplit(':', 1)[0].split('.')
    if (cur_server_name == ['']):
        cur_server_name = real_server_name
        base_url = EnvironBuilder(environ).base_url
    if self.allow_subdomain_redirects:
        allowed = (cur_server_name[(- len(real_server_name)):] == real_server_name)
    else:
        allowed = (cur_server_name == real_server_name)
    if (not allowed):
        raise RuntimeError(('%r    does    not    support    redirect    to    external    targets' % self.__class__))
    status_code = int(response[1].split(None, 1)[0])
    if (status_code == 307):
        method = environ['REQUEST_METHOD']
    else:
        method = 'GET'
    old_response_wrapper = self.response_wrapper
    self.response_wrapper = None
    try:
        return self.open(path=script_root, base_url=base_url, query_string=qs, as_tuple=True, buffered=buffered, method=method)
    finally:
        self.response_wrapper = old_response_wrapper
