首页 >后端开发 >Golang >如何在 Go 中检索 HTTP 重定向后的最终 URL?

如何在 Go 中检索 HTTP 重定向后的最终 URL?

Linda Hamilton
Linda Hamilton原创
2024-11-26 02:05:11960浏览

How to Retrieve the Final URL After HTTP Redirects in Go?

如何在客户端定向后获取 URL

在 Go 的 http 包中,发出多个查询字符串的 http 请求是很常见的。然而,从最终 URL 中提取这些字符串可能具有挑战性,尤其是在发生重定向时。不幸的是,Response 对象缺少有关此最终 URL 的信息。

尽管可以使用重定向预防选项,但本文重点讨论在发出请求后获取 URL。要实现此目的:

  1. 使用 http.NewRequest 创建新的 http 请求。
  2. 设置 http.Client 来处理请求。
  3. 使用匿名函数设置客户端。匿名函数允许将 URL 查询存储在变量中。
  4. 使用 client.Do 执行请求。
  5. 检索存储的 URL 查询。

下面是一个示例代码片段:

import (
    "fmt"
    "log"
    "net/http"
)

func main() {
    req, err := http.NewRequest("GET", "URL", nil)
    if err != nil {
        log.Fatal(err)
    }
    cl := http.Client{}
    var lastUrlQuery string
    cl.CheckRedirect = func(req *http.Request, via []*http.Request) error {
        if len(via) > 10 {
            return errors.New("too many redirects")
        }
        lastUrlQuery = req.URL.RequestURI()
        return nil
    }
    resp, err := cl.Do(req)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("last url query is %v\n", lastUrlQuery)
}

此代码将重定向请求并将最终的 URL 查询保存在最后的UrlQuery。

以上是如何在 Go 中检索 HTTP 重定向后的最终 URL?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn