我正在编写客户端Python单元测试,以验证我的Google App Engine站点上的HTTP 302重定向是否指向正确的页面。到目前为止,我一直在呼叫urllib2.urlopen(my_url).geturl()
。但是,我遇到了两个问题:
?k1=v1&k2=v2
等网址查询字符串;我怎么能看到这些? (我需要检查我是否正确地将访问者的原始URL查询字符串传递到重定向页面。)geturl()
显示任何其他重定向后的最终到达网址。我只关心第一次重定向(来自我网站的重定向);在此之后,我对任何事情都不了解。例如,我们假设我的网站是example.com
。如果用户请求http://www.example.com/somepath/?q=foo
,我可能希望将其重定向到http://www.anothersite.com?q=foo
。其他网站可能会执行另一个重定向到http://subdomain.anothersite.com?q=foo
,我无法控制或预测。如何确保我的重定向正确?答案 0 :(得分:5)
答案 1 :(得分:5)
将follow_redirects=False
提供给fetch function,然后从响应中的“位置”标题中检索第一个重定向的位置,如下所示:
response = urlfetch.fetch(your_url, follow_redirects=False)
location = response.headers['Location']