browser2: Evolve _fix_redirect for latest python-requests

See commits:
e831947be43bc97b39d6e6e573cb0842b67fea80
dacc1d8aafedf80f8736d794005b6c8e8b1d4ad1
b20d171c1c11ecee83b7e4a0beead1e54902d37b

The entire redirect thingy will have to be overriden anyway, as it is
still broken. Cookies are given domain to domain without any checks.
This commit is contained in:
Laurent Bachelier 2012-04-11 09:15:29 +02:00 committed by Romain Bignon
commit 4b802f32dd

View file

@ -169,7 +169,9 @@ class BaseBrowser(object):
if request.allow_redirects is False \
and request.response.status_code in requests.models.REDIRECT_STATI \
and request.config.get('fix-redirect'):
if request.response.status_code is codes.found:
if (request.response.status_code in (codes.moved, codes.found) \
and request.method == 'POST') \
or (request.response.status_code == 303 and request.method != 'HEAD'):
# force the next request to be GET
real_method = request.method
request.method = 'GET'
@ -239,6 +241,7 @@ class BaseBrowser(object):
kwargs['data'] = data
if fix_redirect:
kwargs.setdefault('config', {}).setdefault('fix-redirect', True)
kwargs.setdefault('allow_redirects', False)
if referrer is None:
referrer = self._get_referrer(self.url, url)
if referrer: