Как я могу получить URL цели HTTP перенаправления? - PullRequest
5 голосов
/ 01 марта 2010

Я пишу модульные тесты Python на стороне клиента, чтобы проверить, указывают ли перенаправления HTTP 302 на моем сайте Google App Engine на правильные страницы.До сих пор я звонил urllib2.urlopen(my_url).geturl().Однако я столкнулся с двумя проблемами:

  1. URL-адрес, возвращаемый geturl (), по-видимому, не включает строки URL-запроса, такие как ?k1=v1&k2=v2;как я могу это увидеть?(Мне нужно проверить, правильно ли я передал исходную строку запроса URL-адреса посетителя на страницу перенаправления.)
  2. geturl() показывает окончательный URL-адрес после любых дополнительных перенаправлений.Я просто забочусь о первом перенаправлении (с моего сайта);Я агностика к чему-либо после этого.Например, предположим, мой сайт example.com.Если пользователь запрашивает http://www.example.com/somepath/?q=foo, я могу перенаправить их на http://www.anothersite.com?q=foo.Этот другой сайт может сделать еще одно перенаправление на http://subdomain.anothersite.com?q=foo, которое я не могу контролировать или предсказать.Как я могу убедиться, что мой редирект правильный?

Ответы [ 2 ]

5 голосов
/ 01 марта 2010

Предоставить follow_redirects=False функции извлечения , затем извлечь местоположение первого перенаправления из заголовка 'location' в ответе, например:

response = urlfetch.fetch(your_url, follow_redirects=False)
location = response.headers['Location']
5 голосов
/ 01 марта 2010

Используйте httplib (и посмотрите на статус возврата и заголовок Location ответа), чтобы избежать «перенаправлений с автоматическим следованием», которые мешают вашему тестированию. Вот хороший пример здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...