所以,我使用的是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)
}