Итак, я использую пакет net/http. Я получаю URL, который, как я знаю, перенаправляется. Он может даже перенаправляться пару раз, прежде чем приступать к окончательному URL. Перенаправление выполняется автоматически за кадром.
Есть ли простой способ выяснить, какой конечный URL-адрес был без хакерского обходного пути, который включает установку поля CheckRedirect в объекте http.Client?
Я думаю, я должен упомянуть, что я думаю, что придумал обходной путь, но он вроде хакерский, поскольку он включает использование глобальной переменной и установку поля CheckRedirect в пользовательский http.Client.
Там должен быть более чистый способ сделать это. Я надеюсь на что-то вроде этого:
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)
}