所以,我正在使用 net/http 包。我正在获取一个我肯定知道正在重定向的 URL。它甚至可能在登陆最终 URL 之前重定向几次。重定向在后台自动处理。
有没有一种简单的方法来确定最终 URL 是什么,而无需涉及在 http.Client 对象上设置 CheckRedirect 字段的骇人听闻的解决方法?
我想我应该提一下,我想我想出了一个解决方法,但它有点骇人听闻,因为它涉及使用全局变量并在自定义 http.Client 上设置 CheckRedirect 字段。
必须有一种更清洁的方法来做到这一点。我希望这样的事情:
package main
import (
"fmt"
"log"
"net/http"
)
func main() {
// Try to GET some URL that redirects. Could be 5 or 6 unseen redirections here.
resp, err := http.Get("http://some-server.com/a/url/that/redirects.html")
if err != nil {
log.Fatalf("http.Get => %v", err.Error())
}
// Find out what URL we ended up at
finalURL := magicFunctionThatTellsMeTheFinalURL(resp)
fmt.Printf("The URL you ended up at is: %v", finalURL)
}