示例#1
0
    def update_request_for_redirect(self, request: Request,
                                    response: Response):
        context = request.context  # type: ClientRequestContext
        status = response.status

        if status == 301 or status == 302:
            if self.non_standard_handling_of_301_302_redirect_method:
                # Change original request method to GET (Browser-like)
                request.method = b'GET'

        if status == 303:
            # 303 See Other
            # Change original request method to GET
            request.method = b'GET'

        location = self.extract_redirect_location(response)
        redirect_url = self.get_redirect_url(request, location)

        if redirect_url.schema.lower() not in {b'http', b'https'}:
            raise UnsupportedRedirect()

        self.validate_redirect(redirect_url, response, context)

        if status == 301 or status == 308:
            self._permanent_redirects_urls[request.url.value] = redirect_url

        request.url = redirect_url
示例#2
0
    def update_request_for_redirect(self, request: Request,
                                    response: Response) -> None:
        context: ClientRequestContext = getattr(
            request, "context", ClientRequestContext(request, self.cookie_jar))
        status = response.status

        if status == 301 or status == 302:
            if self.non_standard_handling_of_301_302_redirect_method:
                # Change original request method to GET (Browser-like)
                request.method = "GET"

        if status == 303:
            # 303 See Other
            # Change original request method to GET
            request.method = "GET"

        location = self.extract_redirect_location(response)
        redirect_url = self.get_redirect_url(request, location)

        self.validate_redirect(redirect_url, response, context)

        if status == 301 or status == 308:
            self._permanent_redirects_urls[request.url.value] = redirect_url

        request.url = redirect_url