我正在编写客户端 Python 单元测试,以验证我的 Google App Engine 网站上的 HTTP 302 重定向是否指向正确的页面。到目前为止,我一直在调用 urllib2.urlopen(my_url).geturl()
。但是,我遇到了 2 个问题:
- geturl() 返回的 URL 似乎不包含像
?k1=v1&k2=v2
这样的 URL 查询字符串;我怎样才能看到这些? (我需要检查我是否正确地将访问者的原始 URL 查询字符串传递给了重定向页面。) geturl()
显示任何附加重定向后的最终 URL。我只关心第一个重定向(来 self 网站的那个);在那之后我对任何事情都不可知。例如,假设我的站点是example.com
。如果用户请求http://www.example.com/somepath/?q=foo
,我可能想将他们重定向到http://www.anothersite.com?q=富
。其他网站可能会再次重定向到http://subdomain.anothersite.com?q=foo
,这是我无法控制或预测的。如何确保我的重定向是正确的?
最佳答案
向 fetch function 提供 follow_redirects=False
,然后从响应中的“location” header 中检索第一个重定向的位置,如下所示:
response = urlfetch.fetch(your_url, follow_redirects=False)
location = response.headers['Location']
关于python - 如何获取 HTTP 重定向目标的 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2353689/