簡體   English   中英

如何獲取HTTP重定向目標的URL?

[英]How do I get the URL of an HTTP redirect's target?

我正在編寫客戶端Python單元測試,以驗證我的Google App Engine站點上的HTTP 302重定向是否指向正確的頁面。 到目前為止,我一直在調用urllib2.urlopen(my_url).geturl() 但是,我遇到了兩個問題:

  1. geturl()返回的URL似乎不包含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 ,這是我無法控制或預測的。 如何確保我的重定向是正確的?

使用httplib (並查看響應的返回狀態和Location標頭)以避免阻礙測試的“自動跟蹤重定向”。 有一個很好的例子在這里

提取函數提供follow_redirects=False ,然后從響應中的“location”標題中檢索第一個重定向的位置,如下所示:

response = urlfetch.fetch(your_url, follow_redirects=False)
location = response.headers['Location']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM