Как я получаю URL цели перенаправления HTTP?

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

  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, которым я не могу управлять или предсказать. Как я могу удостовериться, что мое перенаправление корректно?
5
задан RexE 1 March 2010 в 03:13
поделиться

2 ответа

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

response = urlfetch.fetch(your_url, follow_redirects=False)
location = response.headers['Location']
5
ответ дан 13 December 2019 в 22:06
поделиться

Используйте httplib (и посмотрите на статус возврата и заголовок Location в ответе), чтобы избежать "auto-follow redirects", которые мешают вашему тестированию. Есть хороший пример здесь.

5
ответ дан 13 December 2019 в 22:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: